<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="az">
	<id>https://wiki.anas.az/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Modul%3AWikidata%2FPlaces</id>
	<title>Modul:Wikidata/Places - Redaktə tarixçəsi</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.anas.az/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Modul%3AWikidata%2FPlaces"/>
	<link rel="alternate" type="text/html" href="https://wiki.anas.az/mediawiki/index.php?title=Modul:Wikidata/Places&amp;action=history"/>
	<updated>2026-05-10T01:44:35Z</updated>
	<subtitle>Vikidə bu səhifənin dəyişikliklər tarixçəsi</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.anas.az/mediawiki/index.php?title=Modul:Wikidata/Places&amp;diff=173&amp;oldid=prev</id>
		<title>imported&gt;Toghrul R 07:25, 3 iyun 2025-də</title>
		<link rel="alternate" type="text/html" href="https://wiki.anas.az/mediawiki/index.php?title=Modul:Wikidata/Places&amp;diff=173&amp;oldid=prev"/>
		<updated>2025-06-03T07:25:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Yeni səhifə&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local categorizeByPlace = true; &lt;br /&gt;
&lt;br /&gt;
local WDS = require( &amp;#039;Module:WikidataSelectors&amp;#039; );&lt;br /&gt;
local Flags = require( &amp;#039;Module:Wikidata/Flags&amp;#039; );&lt;br /&gt;
local p = {&lt;br /&gt;
	config = {&lt;br /&gt;
		hideSameLabels = false,&lt;br /&gt;
		hidePartOfLabels = false,&lt;br /&gt;
		hideUnitsForCapitals = true,&lt;br /&gt;
		reverseOrder = false,&lt;br /&gt;
		catAmbiguousGeoChains = &amp;#039;[[Kateqoriya:Vikipediya:Coğrafi zənciri olan səhifələr]]&amp;#039;,&lt;br /&gt;
		catLoopInGeoChains = &amp;#039;[[Kateqoriya:Vikipediya:Təkrarlanan coğrafi zənciri olan səhifələr]]&amp;#039;,&lt;br /&gt;
		catWikibaseError = &amp;#039;[[Kateqoriya:Vikipediya:Vikiverilənlər istifadə edən skript xətalı səhifələr]]&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
local function min( prev, next )&lt;br /&gt;
	if prev == nil then&lt;br /&gt;
		return next;&lt;br /&gt;
	elseif prev &amp;gt; next then&lt;br /&gt;
		return next;&lt;br /&gt;
	else&lt;br /&gt;
		return prev;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function max( prev, next )&lt;br /&gt;
	if prev == nil then&lt;br /&gt;
		return next;&lt;br /&gt;
	elseif prev &amp;lt; next then&lt;br /&gt;
		return next;&lt;br /&gt;
	else&lt;br /&gt;
		return prev;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getTimeBoundariesFromProperty( context, propertyId )&lt;br /&gt;
	local dateClaims = WDS.filter( context.entity.claims, propertyId );&lt;br /&gt;
	if not dateClaims or #dateClaims == 0 then&lt;br /&gt;
		return nil;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- only support exact date so far, but need improvment&lt;br /&gt;
	local left = nil;&lt;br /&gt;
	local right = nil;&lt;br /&gt;
	for _, claim in pairs( dateClaims ) do&lt;br /&gt;
		if not claim.mainsnak then return nil; end&lt;br /&gt;
		local boundaries = context.parseTimeBoundariesFromSnak( claim.mainsnak );&lt;br /&gt;
		if not boundaries then return nil; end&lt;br /&gt;
		left = min( left, boundaries[ 1 ] );&lt;br /&gt;
		right = max( right, boundaries[ 2 ] );&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not left or not right then return nil; end&lt;br /&gt;
&lt;br /&gt;
	return { left, right };&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getTimeBoundariesFromProperties( context, propertyIds )&lt;br /&gt;
	for _, propertyId in ipairs( propertyIds ) do&lt;br /&gt;
		local result = getTimeBoundariesFromProperty( context, propertyId );&lt;br /&gt;
		if result then&lt;br /&gt;
			return result;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return nil;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getTimeBoundariesFromQualifiers( context, statement, qualifierId )&lt;br /&gt;
	-- only support exact date so far, but need improvment&lt;br /&gt;
	local left = nil;&lt;br /&gt;
	local right = nil;&lt;br /&gt;
	if statement.qualifiers and statement.qualifiers[qualifierId] then&lt;br /&gt;
		for _, qualifier in pairs( statement.qualifiers[qualifierId] ) do&lt;br /&gt;
			local boundaries = context.parseTimeBoundariesFromSnak( qualifier );&lt;br /&gt;
			if not boundaries then return nil; end&lt;br /&gt;
			left = min( left, boundaries[1] );&lt;br /&gt;
			right = max( right, boundaries[2] );&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not left or not right then&lt;br /&gt;
		return nil;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return { left, right };&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getParentsInBoundariesSnakImpl( context, entityId, boundaries, propertyIds, selectors )&lt;br /&gt;
	local results = {};&lt;br /&gt;
&lt;br /&gt;
	if not propertyIds or #propertyIds == 0 then&lt;br /&gt;
		return results;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for _, propertyId in ipairs( propertyIds ) do&lt;br /&gt;
		if (not string.match( propertyId, &amp;#039;^P%d+$&amp;#039; )) then error(&amp;#039;Incorrect propertyId: &amp;#039; + propertyId); end&lt;br /&gt;
		local selector;&lt;br /&gt;
		if (selectors ~= nil) then&lt;br /&gt;
			selector = selectors[propertyId] or propertyId;&lt;br /&gt;
		else&lt;br /&gt;
			selector = propertyId;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local entityClaims = {};&lt;br /&gt;
		entityClaims[propertyId] = mw.wikibase.getAllStatements( entityId, propertyId );&lt;br /&gt;
&lt;br /&gt;
		local filteredClaims = WDS.filter( entityClaims, selector .. &amp;#039;[rank:preferred, rank:normal]&amp;#039; );&lt;br /&gt;
		if filteredClaims then&lt;br /&gt;
			for _, claim in pairs( filteredClaims ) do&lt;br /&gt;
				if not boundaries or not propertyIds or #propertyIds == 0 then&lt;br /&gt;
					table.insert( results, claim.mainsnak );&lt;br /&gt;
				else&lt;br /&gt;
					local startBoundaries = getTimeBoundariesFromQualifiers( context, claim, &amp;#039;P580&amp;#039; );&lt;br /&gt;
					local endBoundaries = getTimeBoundariesFromQualifiers( context, claim, &amp;#039;P582&amp;#039; );&lt;br /&gt;
		&lt;br /&gt;
					if ( startBoundaries == nil or startBoundaries[2] &amp;lt;= boundaries[1] ) and&lt;br /&gt;
						( endBoundaries == nil or endBoundaries[1] &amp;gt;= boundaries[2] )&lt;br /&gt;
					then&lt;br /&gt;
						table.insert( results, claim.mainsnak );&lt;br /&gt;
					end &lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if #results &amp;gt; 0 then&lt;br /&gt;
			break;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return results;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getParentsInBoundariesSnak( context, entityId, boundaries )&lt;br /&gt;
	if not entityId then error(&amp;#039;entityId must be specified&amp;#039;); end&lt;br /&gt;
	if type(entityId) ~= &amp;#039;string&amp;#039; then error(&amp;#039;entityId must be string&amp;#039;); end&lt;br /&gt;
	if not boundaries then error(&amp;#039;boundaries must be specified&amp;#039;); end&lt;br /&gt;
	if type(boundaries) ~= &amp;#039;table&amp;#039; then error(&amp;#039;boundaries must be table&amp;#039;); end&lt;br /&gt;
&lt;br /&gt;
	local results = getParentsInBoundariesSnakImpl( context, entityId, boundaries, {&amp;#039;P131&amp;#039;} ) -- located in&lt;br /&gt;
	if not results or #results == 0 then&lt;br /&gt;
		results = getParentsInBoundariesSnakImpl( context, entityId, boundaries, {&amp;#039;P17&amp;#039;} ) -- country&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for r, result in pairs( results ) do&lt;br /&gt;
		if result.snaktype ~= &amp;#039;value&amp;#039; then&lt;br /&gt;
			return nil;&lt;br /&gt;
		end&lt;br /&gt;
		local resultId = result.datavalue.value.id;&lt;br /&gt;
		if resultId == entityId then&lt;br /&gt;
			return nil;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return results;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local unions = { &lt;br /&gt;
	Q1140229 = true,&lt;br /&gt;
	Q3623811 = true,&lt;br /&gt;
	Q4120211 = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local countries = {&lt;br /&gt;
	Q6256 = true,&lt;br /&gt;
	Q7275 = true,&lt;br /&gt;
	Q3024240 = true,&lt;br /&gt;
	Q3624078 = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function isSkipTopLevel( entity )&lt;br /&gt;
	local isCountry = false;&lt;br /&gt;
	local isUnion = false;&lt;br /&gt;
	if entity and&lt;br /&gt;
		entity.claims and&lt;br /&gt;
		entity.claims.P31&lt;br /&gt;
	then&lt;br /&gt;
		for c, claim in pairs( entity.claims.P31 ) do&lt;br /&gt;
			if claim and&lt;br /&gt;
				claim.mainsnak and&lt;br /&gt;
				claim.mainsnak.datavalue and&lt;br /&gt;
				claim.mainsnak.datavalue.value and&lt;br /&gt;
				claim.mainsnak.datavalue.value.id&lt;br /&gt;
			then&lt;br /&gt;
				local typeId = claim.mainsnak.datavalue.value.id;&lt;br /&gt;
				isCountry = isCountry or countries[ typeId ];&lt;br /&gt;
				isUnion = isUnion or unions[ typeId ];&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return isUnion and not isCountry;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isPartOfNext( prevLabel, nextLabel )&lt;br /&gt;
	return ( mw.ustring.len( prevLabel ) &amp;gt; mw.ustring.len( nextLabel ) )&lt;br /&gt;
		and ( mw.ustring.sub( prevLabel, mw.ustring.len( prevLabel ) - mw.ustring.len( nextLabel ) + 1 ) == nextLabel );&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Eyniadlı şəhər və rayonlar olduqda, rayonun adı görünməsin&lt;br /&gt;
local function removeAdjacentSnaksDynamic(parentSnaks, parentEntityIds, pairsToCheck, removeIndex)&lt;br /&gt;
    if #parentSnaks &amp;lt; 2 then&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
    for _, pair in ipairs(pairsToCheck) do&lt;br /&gt;
        local id1, id2 = pair[1], pair[2]&lt;br /&gt;
        for i = 1, #parentSnaks - 1 do&lt;br /&gt;
            local firstId = parentSnaks[i].datavalue.value.id&lt;br /&gt;
            local secondId = parentSnaks[i + 1].datavalue.value.id&lt;br /&gt;
&lt;br /&gt;
            if firstId == id1 and secondId == id2 then&lt;br /&gt;
                if removeIndex == 1 then&lt;br /&gt;
                    table.remove(parentSnaks, i)&lt;br /&gt;
                    table.remove(parentEntityIds, i)&lt;br /&gt;
                elseif removeIndex == 2 then&lt;br /&gt;
                    table.remove(parentSnaks, i + 1)&lt;br /&gt;
                    table.remove(parentEntityIds, i + 1)&lt;br /&gt;
                end&lt;br /&gt;
                break&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--Property:P19, Property:P20, Property:P119&lt;br /&gt;
function p.formatPlaceWithQualifiers( context, options, statement )&lt;br /&gt;
	local property = mw.ustring.upper( options.property );&lt;br /&gt;
&lt;br /&gt;
	local actualDateBoundariesProperties = nil;&lt;br /&gt;
	if property == &amp;#039;P19&amp;#039; then actualDateBoundariesProperties = {&amp;#039;P569&amp;#039;,&amp;#039;P570&amp;#039;}; end&lt;br /&gt;
	if property == &amp;#039;P20&amp;#039; then actualDateBoundariesProperties = {&amp;#039;P570&amp;#039;,&amp;#039;P569&amp;#039;}; end&lt;br /&gt;
	if property == &amp;#039;P119&amp;#039; then actualDateBoundariesProperties = {&amp;#039;P570&amp;#039;,&amp;#039;P569&amp;#039;}; end&lt;br /&gt;
	if property == &amp;#039;P159&amp;#039; then actualDateBoundariesProperties = {&amp;#039;P576&amp;#039;}; end&lt;br /&gt;
&lt;br /&gt;
	local boundaries = nil;&lt;br /&gt;
	if actualDateBoundariesProperties ~= nil then&lt;br /&gt;
		boundaries = getTimeBoundariesFromProperties( context, actualDateBoundariesProperties );&lt;br /&gt;
		if (boundaries == nil) and (property == &amp;#039;P159&amp;#039;) then&lt;br /&gt;
			boundaries = {os.time() * 1000, os.time() * 1000};&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local entriesToLookupCategory = {};&lt;br /&gt;
&lt;br /&gt;
	local circumstances = context.getSourcingCircumstances( statement );&lt;br /&gt;
	local result = &amp;#039;&amp;#039;;&lt;br /&gt;
	local baseResult = context.formatSnak( options, statement.mainsnak, circumstances );&lt;br /&gt;
	if not baseResult then&lt;br /&gt;
		return nil;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	insertFromSnak( statement.mainsnak, entriesToLookupCategory )&lt;br /&gt;
&lt;br /&gt;
	local hasAdditionalQualifiers = false;&lt;br /&gt;
	if statement.qualifiers then&lt;br /&gt;
		--parent divisions&lt;br /&gt;
		if statement.qualifiers.P131 then&lt;br /&gt;
			for i, qualifier in ipairs( statement.qualifiers.P131 ) do&lt;br /&gt;
				if qualifier.datavalue then&lt;br /&gt;
					local parentOptions = context.cloneOptions( options );&lt;br /&gt;
					local qualifierEntityId = qualifier.datavalue.value.id;&lt;br /&gt;
					parentOptions[&amp;#039;text&amp;#039;] = getLabel( context, qualifierEntityId, boundaries );&lt;br /&gt;
					local link = context.formatSnak( parentOptions, qualifier );&lt;br /&gt;
	&lt;br /&gt;
					if p.config.reverseOrder then&lt;br /&gt;
						result = link .. &amp;#039;, &amp;#039; .. result;&lt;br /&gt;
					else&lt;br /&gt;
						if link ~= nil then&lt;br /&gt;
							result = result .. &amp;#039;, &amp;#039; .. link;&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					insertFromSnak( qualifier, entriesToLookupCategory )&lt;br /&gt;
					hasAdditionalQualifiers = true;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- country&lt;br /&gt;
		if statement.qualifiers.P17 then&lt;br /&gt;
			for i, qualifier in ipairs( statement.qualifiers.P17 ) do&lt;br /&gt;
				if qualifier.datavalue then&lt;br /&gt;
					local parentOptions = context.cloneOptions( options );&lt;br /&gt;
					local qualifierEntityId = qualifier.datavalue.value.id;&lt;br /&gt;
					parentOptions[ &amp;#039;text&amp;#039; ] = getLabel( context, qualifierEntityId, boundaries );&lt;br /&gt;
					local link = context.formatSnak( parentOptions, qualifier );&lt;br /&gt;
	&lt;br /&gt;
					if p.config.reverseOrder then&lt;br /&gt;
						result = link .. &amp;#039;, &amp;#039; .. result;&lt;br /&gt;
					else&lt;br /&gt;
						if link ~= nil then&lt;br /&gt;
							result = result .. &amp;#039;, &amp;#039; .. link;&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					insertFromSnak( qualifier, entriesToLookupCategory )&lt;br /&gt;
					hasAdditionalQualifiers = true;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if statement.mainsnak and&lt;br /&gt;
		statement.mainsnak.datavalue and&lt;br /&gt;
		statement.mainsnak.datavalue.value and&lt;br /&gt;
		statement.mainsnak.datavalue.value.id&lt;br /&gt;
	then&lt;br /&gt;
		local entityId = statement.mainsnak.datavalue.value.id;&lt;br /&gt;
		local parentSnaks = { statement.mainsnak };&lt;br /&gt;
		local parentEntityIds = { entityId };&lt;br /&gt;
&lt;br /&gt;
		if actualDateBoundariesProperties ~= nil then&lt;br /&gt;
			&lt;br /&gt;
			if boundaries then&lt;br /&gt;
				local entityOptions = context.cloneOptions( options );&lt;br /&gt;
				entityOptions[&amp;#039;text&amp;#039;] = getLabel( context, entityId, boundaries );&lt;br /&gt;
				baseResult = context.formatSnak( entityOptions, statement.mainsnak, circumstances );&lt;br /&gt;
&lt;br /&gt;
				local parentId = entityId;&lt;br /&gt;
				while parentId ~= nil do&lt;br /&gt;
					-- get parent&lt;br /&gt;
					local newParentSnaks = getParentsInBoundariesSnak( context, parentId, boundaries );&lt;br /&gt;
					if not newParentSnaks or #newParentSnaks == 0 then&lt;br /&gt;
						parentId = nil;&lt;br /&gt;
					elseif #newParentSnaks == 1 then&lt;br /&gt;
						local parentSnak = newParentSnaks[ 1 ];&lt;br /&gt;
						parentId = parentSnak.datavalue.value.id;&lt;br /&gt;
						&lt;br /&gt;
						local hasLoop = false&lt;br /&gt;
						for _, parentEntityId in pairs(parentEntityIds) do&lt;br /&gt;
							if parentEntityId == parentId then&lt;br /&gt;
								hasLoop = true&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
						&lt;br /&gt;
						if hasLoop then&lt;br /&gt;
							if p.config and p.config.catLoopInGeoChains then&lt;br /&gt;
								result = result .. p.config.catLoopInGeoChains;&lt;br /&gt;
							end&lt;br /&gt;
							break -- while parentId ~= nil do&lt;br /&gt;
						end&lt;br /&gt;
								&lt;br /&gt;
						table.insert( parentSnaks, parentSnak );&lt;br /&gt;
						table.insert( parentEntityIds, parentId );&lt;br /&gt;
					else&lt;br /&gt;
						parentId = nil;&lt;br /&gt;
						if p.config and p.config.catAmbiguousGeoChains then&lt;br /&gt;
							result = result .. p.config.catAmbiguousGeoChains;&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if not hasAdditionalQualifiers then&lt;br /&gt;
					for i = 2, #parentSnaks, 1 do&lt;br /&gt;
						local parentSnak = parentSnaks[ i ];&lt;br /&gt;
						insertFromSnak( parentSnak, entriesToLookupCategory )&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- do not output similar countries like &amp;quot;Denmark, the Kingdom of Denmark&amp;quot;&lt;br /&gt;
				local simularCountries = {&lt;br /&gt;
					[&amp;#039;Q41304&amp;#039;] = &amp;#039;Q1206012&amp;#039;, -- Weimar Republic / German Reich&lt;br /&gt;
					[&amp;#039;Q7318&amp;#039;] = &amp;#039;Q1206012&amp;#039;, -- Weimar Republic / Nazi Germany&lt;br /&gt;
					[&amp;#039;Q35&amp;#039;] = &amp;#039;Q756617&amp;#039;, -- Denmark / Danish Realm&lt;br /&gt;
					[&amp;#039;Q55&amp;#039;] = &amp;#039;Q29999&amp;#039;, -- Netherlands / Kingdom of the Netherlands&lt;br /&gt;
					[&amp;#039;Q32081&amp;#039;] = &amp;#039;Q865&amp;#039;, -- Taiwan Province / Taiwan&lt;br /&gt;
				}&lt;br /&gt;
				if (#parentSnaks &amp;gt; 1) then&lt;br /&gt;
					for smallerCountryId, largerCountryId in pairs( simularCountries ) do&lt;br /&gt;
						if parentSnaks[ #parentSnaks ].datavalue.value.id == largerCountryId&lt;br /&gt;
							and parentSnaks[ #parentSnaks - 1 ].datavalue.value.id == smallerCountryId&lt;br /&gt;
						then&lt;br /&gt;
							table.remove( parentSnaks, #parentSnaks );&lt;br /&gt;
							table.remove( parentEntityIds, #parentEntityIds );&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- optimization for capital regions&lt;br /&gt;
				if (#parentSnaks &amp;gt; 3) then&lt;br /&gt;
					if parentSnaks[ #parentSnaks - 2 ].datavalue.value.id == &amp;#039;Q23939248&amp;#039; --Greater London, Greater London&lt;br /&gt;
						and parentSnaks[ #parentSnaks - 3 ].datavalue.value.id == &amp;#039;Q23306&amp;#039;&lt;br /&gt;
					then&lt;br /&gt;
						table.remove( parentSnaks, #parentSnaks - 2 );&lt;br /&gt;
						table.remove( parentEntityIds, #parentEntityIds - 2 );&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				if (#parentSnaks &amp;gt; 2) then&lt;br /&gt;
					if parentSnaks[ #parentSnaks - 1 ].datavalue.value.id == &amp;#039;Q240&amp;#039; --Brussels-Capital, Brussels&lt;br /&gt;
						and parentSnaks[ #parentSnaks - 2 ].datavalue.value.id == &amp;#039;Q90870&amp;#039;&lt;br /&gt;
					then&lt;br /&gt;
						table.remove( parentSnaks, #parentSnaks - 2 );&lt;br /&gt;
						table.remove( parentEntityIds, #parentEntityIds - 2 );&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				if (#parentSnaks &amp;gt; 2) then&lt;br /&gt;
					if parentSnaks[ #parentSnaks ].datavalue.value.id == &amp;#039;Q34266&amp;#039;&lt;br /&gt;
						and parentSnaks[ #parentSnaks - 1 ].datavalue.value.id == &amp;#039;Q2424466&amp;#039; -- Qafqaz canişinliyi görünməsin&lt;br /&gt;
					then&lt;br /&gt;
						table.remove( parentSnaks, #parentSnaks - 1 );&lt;br /&gt;
						table.remove( parentEntityIds, #parentEntityIds - 1 );&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				if (#parentSnaks &amp;gt; 2) then&lt;br /&gt;
					if parentSnaks[ #parentSnaks - 1 ].datavalue.value.id == &amp;#039;Q763603&amp;#039;&lt;br /&gt;
						and parentSnaks[ #parentSnaks - 2 ].datavalue.value.id == &amp;#039;Q4075927&amp;#039;&lt;br /&gt;
						and parentSnaks[ #parentSnaks - 3 ].datavalue.value.id == &amp;#039;Q9248&amp;#039; -- Bakı, Bakı qəzası, Bakı quberniyası ardıcıllığında qəza görünməsin&lt;br /&gt;
					then&lt;br /&gt;
						table.remove( parentSnaks, #parentSnaks - 2 );&lt;br /&gt;
						table.remove( parentEntityIds, #parentEntityIds - 2 );&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				if (#parentSnaks &amp;gt; 2) then&lt;br /&gt;
					if parentSnaks[ #parentSnaks - 1 ].datavalue.value.id == &amp;#039;Q596063&amp;#039;&lt;br /&gt;
						and parentSnaks[ #parentSnaks - 2 ].datavalue.value.id == &amp;#039;Q8051535&amp;#039;&lt;br /&gt;
						and parentSnaks[ #parentSnaks - 3 ].datavalue.value.id == &amp;#039;Q131290&amp;#039; -- Yelizavetpol&lt;br /&gt;
					then&lt;br /&gt;
						table.remove( parentSnaks, #parentSnaks - 2 );&lt;br /&gt;
						table.remove( parentEntityIds, #parentEntityIds - 2 );&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				if (#parentSnaks &amp;gt; 2) then&lt;br /&gt;
					if parentSnaks[ #parentSnaks - 1 ].datavalue.value.id == &amp;#039;Q1773517&amp;#039;&lt;br /&gt;
						and parentSnaks[ #parentSnaks - 2 ].datavalue.value.id == &amp;#039;Q12864947&amp;#039;&lt;br /&gt;
						and parentSnaks[ #parentSnaks - 3 ].datavalue.value.id == &amp;#039;Q994&amp;#039; -- Tiflis&lt;br /&gt;
					then&lt;br /&gt;
						table.remove( parentSnaks, #parentSnaks - 2 );&lt;br /&gt;
						table.remove( parentEntityIds, #parentEntityIds - 2 );&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local pairsToCheck = {&lt;br /&gt;
				    {&amp;#039;Q457485&amp;#039;, &amp;#039;Q1017678&amp;#039;},&lt;br /&gt;
				}&lt;br /&gt;
				removeAdjacentSnaksDynamic(parentSnaks, parentEntityIds, pairsToCheck, 1)&lt;br /&gt;
				&lt;br /&gt;
				-- do not output (maternity) hospitals, houses and streets&lt;br /&gt;
				local ignoredTypes = {&lt;br /&gt;
					&amp;#039;Q3947&amp;#039;, -- house&lt;br /&gt;
					&amp;#039;Q16917&amp;#039;, -- hospital&lt;br /&gt;
					&amp;#039;Q34442&amp;#039;, -- road&lt;br /&gt;
					&amp;#039;Q79007&amp;#039;, -- street&lt;br /&gt;
					&amp;#039;Q174782&amp;#039;, -- square&lt;br /&gt;
					&amp;#039;Q958822&amp;#039;, -- maternity hospital&lt;br /&gt;
					&amp;#039;Q2087181&amp;#039;, -- historic house museum&lt;br /&gt;
					&amp;#039;Q11303&amp;#039;, -- skyscraper&lt;br /&gt;
					&amp;#039;Q751876&amp;#039;, -- chateu&lt;br /&gt;
					&amp;#039;Q23413&amp;#039;, -- castle&lt;br /&gt;
					&amp;#039;Q15071808&amp;#039;, -- selsovet&lt;br /&gt;
					&amp;#039;Q27002&amp;#039;, -- selsovet&lt;br /&gt;
				}&lt;br /&gt;
				-- unignored types&lt;br /&gt;
				local unignoredTypes = {&lt;br /&gt;
					&amp;#039;Q879050&amp;#039;, -- manor house&lt;br /&gt;
					&amp;#039;Q1343246&amp;#039;, -- English country house&lt;br /&gt;
				}&lt;br /&gt;
				if (#parentSnaks &amp;gt; 1) then&lt;br /&gt;
					local p31 = mw.wikibase.getAllStatements( parentEntityIds[ 1 ], &amp;#039;P31&amp;#039; );&lt;br /&gt;
					local doignore = true;&lt;br /&gt;
					for _, iOf in ipairs( p31 ) do&lt;br /&gt;
						for _, unignoredTypeId in ipairs( unignoredTypes ) do&lt;br /&gt;
							if ( iOf.mainsnak.datavalue.value.id == unignoredTypeId ) then&lt;br /&gt;
								doignore = false;&lt;br /&gt;
								unignoredTypes = {};&lt;br /&gt;
								ignoredTypes = {};&lt;br /&gt;
								break;&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					&lt;br /&gt;
					if (doignore) then&lt;br /&gt;
						for _, iOf in ipairs( p31 ) do&lt;br /&gt;
							for _, ignoredTypeId in ipairs( ignoredTypes ) do&lt;br /&gt;
								if ( iOf.mainsnak.datavalue.value.id == ignoredTypeId ) then&lt;br /&gt;
									baseResult = &amp;#039;&amp;#039;;&lt;br /&gt;
									unignoredTypes = {};&lt;br /&gt;
									ignoredTypes = {};&lt;br /&gt;
									break;&lt;br /&gt;
								end&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				do&lt;br /&gt;
					local capofstate = false;&lt;br /&gt;
					local i = #parentSnaks;&lt;br /&gt;
					while i &amp;gt; 1 do&lt;br /&gt;
						local prevEntityId = parentEntityIds[ i - 1 ];&lt;br /&gt;
						-- TODO: use English labels, if there is no current language labels&lt;br /&gt;
						local prevLabel = getLabel( context, prevEntityId, boundaries ) or &amp;#039;&amp;#039;;&lt;br /&gt;
						local nextEntityId = parentEntityIds[ i ];&lt;br /&gt;
						local nextLabel = getLabel( context, nextEntityId, boundaries ) or &amp;#039;&amp;#039;;&lt;br /&gt;
						if p.config and p.config.hideSameLabels == true and prevLabel == nextLabel then&lt;br /&gt;
							-- do not output same label twice (NY, NY, USA)&lt;br /&gt;
							table.remove( parentSnaks, i );&lt;br /&gt;
							table.remove( parentEntityIds, i );&lt;br /&gt;
						elseif p.config and p.config.hidePartOfLabels == true and isPartOfNext( prevLabel, &amp;#039; &amp;#039; .. nextLabel ) then&lt;br /&gt;
							-- do not output same label if it&amp;#039;s part of previos&lt;br /&gt;
							table.remove( parentSnaks, i - 1 );&lt;br /&gt;
							table.remove( parentEntityIds, i - 1 );&lt;br /&gt;
						elseif p.config and p.config.hideUnitsForCapitals == true then&lt;br /&gt;
							-- do not ouput items whose capital is the first item&lt;br /&gt;
							local capitalId = nil;&lt;br /&gt;
							if capitalId ~= nil then&lt;br /&gt;
								if i == #parentSnaks then&lt;br /&gt;
									i = i - 1;&lt;br /&gt;
								end&lt;br /&gt;
								-- always ouput constituent countries like England or Russian SFSR&lt;br /&gt;
								if (i == (#parentSnaks-1)) and (capofstate == false) then&lt;br /&gt;
									local p31 = mw.wikibase.getAllStatements(parentEntityIds[ i ], &amp;#039;P31&amp;#039;);&lt;br /&gt;
										for _, iOf in pairs (p31) do&lt;br /&gt;
											if (iOf.mainsnak.datavalue.value[&amp;#039;numeric-id&amp;#039;] == 236036) or (iOf.mainsnak.datavalue.value[&amp;#039;numeric-id&amp;#039;] == 3336843) or (iOf.mainsnak.datavalue.value[&amp;#039;numeric-id&amp;#039;] == 12959600) or (iOf.mainsnak.datavalue.value[&amp;#039;numeric-id&amp;#039;] == 56219758) or (iOf.mainsnak.datavalue.value[&amp;#039;numeric-id&amp;#039;] == 15304003) or (iOf.mainsnak.datavalue.value[&amp;#039;numeric-id&amp;#039;] == 66724388) then&lt;br /&gt;
												i = i - 1;&lt;br /&gt;
										end&lt;br /&gt;
									end&lt;br /&gt;
								end&lt;br /&gt;
								while i &amp;gt; 1 and parentEntityIds[ i ] ~= capitalId do&lt;br /&gt;
									table.remove( parentSnaks, i );&lt;br /&gt;
									table.remove( parentEntityIds, i );&lt;br /&gt;
									i = i - 1;&lt;br /&gt;
								end&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
						i = i - 1;&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if isSkipTopLevel( parentEntityIds[ #parentEntityIds ] ) then&lt;br /&gt;
					table.remove( parentSnaks, #parentEntityIds );&lt;br /&gt;
					table.remove( parentEntityIds, #parentEntityIds );&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if not hasAdditionalQualifiers then&lt;br /&gt;
					for i = 2, #parentSnaks, 1 do&lt;br /&gt;
						local parentSnak = parentSnaks[ i ];&lt;br /&gt;
&lt;br /&gt;
						local parentOptions = context.cloneOptions( options );&lt;br /&gt;
						parentOptions[&amp;#039;text&amp;#039;] = getLabel( context, parentEntityIds[ i ], boundaries );&lt;br /&gt;
&lt;br /&gt;
						local comma;&lt;br /&gt;
						if ((baseResult == &amp;#039;&amp;#039;) and (i == 2)) then&lt;br /&gt;
							comma = &amp;#039;&amp;#039;;&lt;br /&gt;
						else&lt;br /&gt;
							comma = &amp;#039;, &amp;#039;;&lt;br /&gt;
						end&lt;br /&gt;
&lt;br /&gt;
						if p.config.reverseOrder then&lt;br /&gt;
							result = context.formatSnak( parentOptions, parentSnak ) .. comma .. result;&lt;br /&gt;
						else&lt;br /&gt;
							if result and context.formatSnak( parentOptions, parentSnak ) ~= nil then&lt;br /&gt;
								result = result .. comma .. context.formatSnak( parentOptions, parentSnak );&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if options[ &amp;#039;thisLocationOnly&amp;#039; ] then&lt;br /&gt;
		result = baseResult;&lt;br /&gt;
	elseif p.config.reverseOrder then&lt;br /&gt;
		result = result .. baseResult;&lt;br /&gt;
	else&lt;br /&gt;
		result = baseResult .. result;&lt;br /&gt;
	end&lt;br /&gt;
	if options.references then&lt;br /&gt;
		result = result .. context.formatRefs( options, statement );&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if categorizeByPlace then&lt;br /&gt;
		if property == &amp;#039;P19&amp;#039; then result = result .. getCategory( &amp;#039;P1464&amp;#039;, entriesToLookupCategory ); end&lt;br /&gt;
		if property == &amp;#039;P20&amp;#039; then result = result .. getCategory( &amp;#039;P1465&amp;#039;, entriesToLookupCategory ); end&lt;br /&gt;
		if property == &amp;#039;P119&amp;#039; then result = result .. getCategory( &amp;#039;P1791&amp;#039;, entriesToLookupCategory ); end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return result;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- append entity id from snak to result&lt;br /&gt;
function insertFromSnak( snak, result )&lt;br /&gt;
	if not categorizeByPlace then&lt;br /&gt;
		return;&lt;br /&gt;
	end&lt;br /&gt;
	if snak and&lt;br /&gt;
		snak.datavalue and&lt;br /&gt;
		snak.datavalue.type == &amp;#039;wikibase-entityid&amp;#039; and&lt;br /&gt;
		snak.datavalue.value and&lt;br /&gt;
		snak.datavalue.value[ &amp;#039;entity-type&amp;#039; ] == &amp;#039;item&amp;#039;&lt;br /&gt;
	then&lt;br /&gt;
		table.insert( result, snak.datavalue.value.id );&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function getCategory( propertyId, entriesToLookupCategoryFor )&lt;br /&gt;
	if mw.title.getCurrentTitle().namespace == 0 then&lt;br /&gt;
		for _, placeId in pairs( entriesToLookupCategoryFor ) do&lt;br /&gt;
			local claims = mw.wikibase.getBestStatements(placeId, propertyId);&lt;br /&gt;
	&lt;br /&gt;
			if claims then&lt;br /&gt;
				for _, claim in pairs( claims ) do&lt;br /&gt;
					if claim.mainsnak and&lt;br /&gt;
						claim.mainsnak and&lt;br /&gt;
						claim.mainsnak.datavalue and&lt;br /&gt;
						claim.mainsnak.datavalue.type == &amp;#039;wikibase-entityid&amp;#039;&lt;br /&gt;
					then&lt;br /&gt;
						local catEntityId = claim.mainsnak.datavalue.value.id;&lt;br /&gt;
						local catSitelink = mw.wikibase.getSitelink(catEntityId);&lt;br /&gt;
						if (catSitelink) then&lt;br /&gt;
							return &amp;#039;[[&amp;#039; .. catSitelink .. &amp;#039;]]&amp;#039;;&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;#039;&amp;#039;;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local historicNamesProperties = { &amp;#039;P1813&amp;#039;, &amp;#039;P1448&amp;#039;, &amp;#039;P1705&amp;#039; };&lt;br /&gt;
&lt;br /&gt;
local langCode = mw.language.getContentLanguage():getCode();&lt;br /&gt;
local historicNamesPropertySelectors = {&lt;br /&gt;
		P1813 = &amp;#039;P1813[language:&amp;#039; .. langCode .. &amp;#039;]&amp;#039;,&lt;br /&gt;
		P1448 = &amp;#039;P1448[language:&amp;#039; .. langCode .. &amp;#039;]&amp;#039;,&lt;br /&gt;
		P1705 = &amp;#039;P1705[language:&amp;#039; .. langCode .. &amp;#039;]&amp;#039;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
-- get current of historic name of place&lt;br /&gt;
function getLabel( context, entityId, boundaries )&lt;br /&gt;
	if not entityId then&lt;br /&gt;
		return nil;&lt;br /&gt;
	end&lt;br /&gt;
	if (type(entityId) ~= &amp;#039;string&amp;#039;) then error(&amp;#039;incorrect type of entityId argument&amp;#039;); end;&lt;br /&gt;
&lt;br /&gt;
    local label = nil;&lt;br /&gt;
&lt;br /&gt;
	-- name from properties&lt;br /&gt;
	local results = getParentsInBoundariesSnakImpl( context, entityId, boundaries,&lt;br /&gt;
		historicNamesProperties, historicNamesPropertySelectors);&lt;br /&gt;
&lt;br /&gt;
	for r, result in pairs( results ) do&lt;br /&gt;
		if result.datavalue and&lt;br /&gt;
			result.datavalue.value and&lt;br /&gt;
			result.datavalue.value.text&lt;br /&gt;
		then&lt;br /&gt;
			label = result.datavalue.value.text;&lt;br /&gt;
			break;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    -- name from label&lt;br /&gt;
    if label == nil then&lt;br /&gt;
		label = mw.wikibase.getLabelByLang( entityId, &amp;#039;az&amp;#039; )&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return label;&lt;br /&gt;
    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.getLabel = getLabel;&lt;br /&gt;
&lt;br /&gt;
local function calculateEndDateTimestamp( context, options, statement )&lt;br /&gt;
	if not context then error( &amp;#039;context not specified&amp;#039; ) end;&lt;br /&gt;
	if not options then error( &amp;#039;options not specified&amp;#039; ) end;&lt;br /&gt;
	if not options.entity then error( &amp;#039;options.entity missing&amp;#039; ) end;&lt;br /&gt;
	if not statement then error( &amp;#039;statement not specified&amp;#039; ) end;&lt;br /&gt;
&lt;br /&gt;
	if statement.qualifiers and statement.qualifiers.P582 then&lt;br /&gt;
		for i, qualifier in ipairs( statement.qualifiers.P582 ) do&lt;br /&gt;
			local parsedTime = context.parseTimeFromSnak( qualifier );&lt;br /&gt;
			if parsedTime then&lt;br /&gt;
				return parsedTime;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- check death day... do we have it at all?&lt;br /&gt;
	for h, propertyId in pairs( { &amp;quot;P570&amp;quot;, &amp;quot;P577&amp;quot;, &amp;quot;P576&amp;quot; } ) do&lt;br /&gt;
		local dateClaims = context.selectClaims( options, propertyId );&lt;br /&gt;
		if dateClaims then&lt;br /&gt;
			for i, statement in ipairs( dateClaims ) do&lt;br /&gt;
				local parsedTime = context.parseTimeFromSnak( statement.mainsnak );&lt;br /&gt;
				if parsedTime then&lt;br /&gt;
					return parsedTime;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- TODO: check other &amp;quot;end&amp;quot; properties&lt;br /&gt;
&lt;br /&gt;
	-- no death day&lt;br /&gt;
	return os.time() * 1000;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function deleteTwinAncestors( countryEntityId, propertyId, entityId ) --do not display countries which have twin ancestors&lt;br /&gt;
	local badTwins&lt;br /&gt;
	if ( countryEntityId == &amp;#039;Q174193&amp;#039; ) then				--Great Britain and Ireland&lt;br /&gt;
		badTwins = {&amp;#039;Q145&amp;#039;}									--Great Brirani &amp;amp; NI&lt;br /&gt;
    elseif ( countryEntityId == &amp;#039;Q161885&amp;#039; ) then			--Great Britain&lt;br /&gt;
		badTwins = {&amp;#039;Q174193&amp;#039;}								--Great Britain and Ireland&lt;br /&gt;
	elseif ( countryEntityId == &amp;#039;Q43287&amp;#039; ) then				--German Impire&lt;br /&gt;
		badTwins = {&amp;#039;Q41304&amp;#039;, &amp;#039;Q7318&amp;#039;, &amp;#039;Q2415901&amp;#039;, &amp;#039;Q183&amp;#039;}	--Weimar Republic or Nazi Germany or Allied-occupied Germany or Germany&lt;br /&gt;
	elseif ( countryEntityId == &amp;#039;Q41304&amp;#039; ) then				--Weimar Republic&lt;br /&gt;
		badTwins = {&amp;#039;Q7318&amp;#039;, &amp;#039;Q2415901&amp;#039;, &amp;#039;Q183&amp;#039;}			--Nazi Germany or Allied-occupied Germany or Germany&lt;br /&gt;
	elseif ( countryEntityId == &amp;#039;Q7318&amp;#039; ) then				--Nazi Germany&lt;br /&gt;
		badTwins = {&amp;#039;Q2415901&amp;#039;, &amp;#039;Q183&amp;#039;}						--Allied-occupied Germany or Germany&lt;br /&gt;
    elseif ( countryEntityId == &amp;#039;Q2415901&amp;#039; ) then			--Allied-occupied Germany&lt;br /&gt;
		badTwins = {&amp;#039;Q183&amp;#039;}									--Germany&lt;br /&gt;
	elseif ( countryEntityId == &amp;#039;Q696908&amp;#039; ) then			--Kingdom of Poland&lt;br /&gt;
		badTwins = {&amp;#039;Q207272&amp;#039;, &amp;#039;Q211274&amp;#039;, &amp;#039;Q36&amp;#039;}			--Second Polish Republic or Polish People&amp;#039;s Republic or Poland&lt;br /&gt;
	elseif ( countryEntityId == &amp;#039;Q207272&amp;#039; ) then			--Second Polish Republic&lt;br /&gt;
		badTwins = {&amp;#039;Q211274&amp;#039;, &amp;#039;Q36&amp;#039;}						--Polish People&amp;#039;s Republic or Poland&lt;br /&gt;
	elseif ( countryEntityId == &amp;#039;Q211274&amp;#039; ) then			--Polish People&amp;#039;s Republic&lt;br /&gt;
		badTwins = {&amp;#039;Q36&amp;#039;}									--Poland&lt;br /&gt;
	elseif ( countryEntityId == &amp;#039;Q203493&amp;#039; ) then			--Kingdom of Romania&lt;br /&gt;
		badTwins = {&amp;#039;Q842794&amp;#039;, &amp;#039;Q218&amp;#039;}						--Socialist Republic of Romania or Romania&lt;br /&gt;
	elseif ( countryEntityId == &amp;#039;Q842794&amp;#039; ) then			--Socialist Republic of Romania&lt;br /&gt;
		badTwins = {&amp;#039;Q218&amp;#039;}									--Romania&lt;br /&gt;
	elseif ( countryEntityId == &amp;#039;Q838261&amp;#039; ) then			--FR of Yugoslavia&lt;br /&gt;
		badTwins = {&amp;#039;Q37024&amp;#039;}								--Serbia &amp;amp; Montenegro&lt;br /&gt;
	else&lt;br /&gt;
		return true;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local listforcheck&lt;br /&gt;
	if propertyId == &amp;#039;P1532&amp;#039; then&lt;br /&gt;
		listforcheck = mw.wikibase.getAllStatements( entityId, propertyId );&lt;br /&gt;
	else&lt;br /&gt;
		listforcheck = mw.wikibase.getBestStatements( entityId, propertyId );&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, claim in pairs( listforcheck ) do&lt;br /&gt;
		if ( claim and claim.mainsnak&lt;br /&gt;
			and claim.mainsnak.datavalue&lt;br /&gt;
			and claim.mainsnak.datavalue.value&lt;br /&gt;
			and claim.mainsnak.datavalue.value.id ) then&lt;br /&gt;
			local actualId = claim.mainsnak.datavalue.value.id;&lt;br /&gt;
			for index, value in ipairs(badTwins) do&lt;br /&gt;
				if ( value == actualId ) then&lt;br /&gt;
            		return false;&lt;br /&gt;
        		end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true; &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatCountryClaimWithFlag( context, options, statement )&lt;br /&gt;
	if not context then error(&amp;#039;context not specified&amp;#039;) end;&lt;br /&gt;
	if not options then error(&amp;#039;options not specified&amp;#039;) end;&lt;br /&gt;
	if not options.entity then error(&amp;#039;options.entity is missing&amp;#039;) end;&lt;br /&gt;
	if not statement then error(&amp;#039;statement not specified&amp;#039;) end;&lt;br /&gt;
&lt;br /&gt;
	if not statement.mainsnak or&lt;br /&gt;
		not statement.mainsnak.datavalue or&lt;br /&gt;
		not statement.mainsnak.datavalue.value or&lt;br /&gt;
		not statement.mainsnak.datavalue.value.id&lt;br /&gt;
	then&lt;br /&gt;
		local result = context.formatStatementDefault( context, options, statement );&lt;br /&gt;
		if not result then&lt;br /&gt;
			return &amp;#039;&amp;#039;;&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;#039;&amp;lt;span class=&amp;quot;country-name&amp;quot;&amp;gt;&amp;#039; .. result .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local countryEntityId = statement.mainsnak.datavalue.value.id;&lt;br /&gt;
	local endDateTimestamp = calculateEndDateTimestamp( context, options, statement );&lt;br /&gt;
	local boundaries = getTimeBoundariesFromProperties( context, {&amp;#039;P570&amp;#039;, &amp;#039;P577&amp;#039;, &amp;#039;P571&amp;#039;} );&lt;br /&gt;
&lt;br /&gt;
	if deleteTwinAncestors( countryEntityId, string.upper(options.property), options.entity.id ) then&lt;br /&gt;
&lt;br /&gt;
		local countryOptions = context.cloneOptions( options );&lt;br /&gt;
		if not countryOptions[&amp;#039;text&amp;#039;] or countryOptions[&amp;#039;text&amp;#039;] == &amp;#039;&amp;#039; then&lt;br /&gt;
			countryOptions[&amp;#039;text&amp;#039;] = getLabel( context, countryEntityId, boundaries );&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local flag = Flags.getFlag( context, countryEntityId, endDateTimestamp );&lt;br /&gt;
		&lt;br /&gt;
		if context.formatStatementDefault( context, countryOptions, statement ) ~= nil then&lt;br /&gt;
		if flag then&lt;br /&gt;
			return flag .. &amp;#039;&amp;amp;nbsp;&amp;lt;span class=&amp;quot;country-name&amp;quot;&amp;gt;&amp;#039; ..&lt;br /&gt;
				context.formatStatementDefault( context, countryOptions, statement ) ..&lt;br /&gt;
				&amp;#039;&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if context.formatStatementDefault( context, countryOptions, statement ) ~= nil then&lt;br /&gt;
		return &amp;#039;&amp;lt;span class=&amp;quot;country-name&amp;quot;&amp;gt;&amp;#039; ..&lt;br /&gt;
			context.formatStatementDefault( context, countryOptions, statement ) ..&lt;br /&gt;
			&amp;#039;&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
		else&lt;br /&gt;
		return nil;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p;&lt;/div&gt;</summary>
		<author><name>imported&gt;Toghrul R</name></author>
	</entry>
</feed>