WeakAuras2
WeakAuras2 copied to clipboard
"Pixel Perfect" Sizing, Alignment
What steps will reproduce the problem?
If you are using a UI that is scaled (i.e., Borderless Windowed), your WeakAuras may not be sized or placed in a way that lines up with actual pixels on the screen.
What is the expected output? What do you see instead?
https://cdn.discordapp.com/attachments/172440238717665280/333680409495863308/unknown.png
In the graphic above, you can see that some borders are slightly larger than they ought to be -- all are set to 1px, but the placement and sizing of 1px would actually overlap two pixels, so the bottom of the "Stormbringer 6s" bar fills two pixels. You can also see that the spacing between bars is somewhat irregular, despite being a "Dynamic Group" whose spacing is managed by WA.
Did you try having WeakAuras as the only enabled addon and everything else (especially something like ElvUI) disabled?
n/a
What version of WeakAuras are you using?
Interface: 70200
Title: WeakAuras 2
Author: Mirrored and the WeakAuras Team
Version: 2.4.9.1-2-gfad9a86
Was it working in a previous version? If yes, which was the last good one?
No, "pixel perfect" has been discussed before but not implemented.
**Do you have an error log of what happened? If you don't see any errors, make sure that error reporting is enabled (/console scriptErrors 1
) or install BugSack. **
n/a
Please provide any additional information below.
After obtaining my UI scale as follows:
local monitorIndex = ( tonumber(GetCVar('gxMonitor')) or 0 ) + 1
local resolutions = { GetScreenResolutions() }
local resolution = resolutions[ GetCurrentResolution() ] or GetCVar("gxWindowedResolution")
local scale = GetCVar( "UseUIScale" ) == "1" and ( GetScreenHeight() / resolution:match("%d+x(%d+)") ) or 1
... I found my scale value to be 0.833333 (5/6). Updating the "Space" value on my Dynamic Group ( 4 x 5 / 6 ) = 3.33 and on the sizes of my bars and what, ultimately results in this:
https://cdn.discordapp.com/attachments/172440238717665280/333687505356455936/unknown.png
Example Group WA, tweaked for a 5/6 uiScale:
dK0MecGibs(efyuaYPauRcQQuVcQQKzjOULa1UOq)IIsggvQJjGLji9mrHPPiY1uLQTrrrFJIcJtruNdQcnpOQIUNIYbvewOG4HceteQQ6IkQAJkQ8rrPAKQsHtQi1kfzMqv6MQsr7Kk(PQuAOqvzPIs5PiMQO6QIs(kufOZkqQ9I6VQIblDyKwSQKhd0KvWLvAZa8zkYOffDAHwnuf0RvKmBOCBfA3q(nLgovYYb9Cv10v56u12HkFNIsnEkOZtr16HQO3dvv4(qva7NmhGZzcLZ5JjFMeQXjzepAmqWHgSja0b8iDYMjtgzYatg4CMycAnBMKf(yI5VfaG)EStggZidMqrGzAH4ZgrhtYFl(ycf8I42Cy0KPf(M2HLDcoGBM8Drbx2jdJzKrgzWK)IbaF2i6ysiVnp)TVjtYCJMY845EFsVNX7M5KmJjp5jBMMHBZiugqWt6DMGzPdCotok2IUq5CMm6XUiNZhFm5Oyl64CMm6XUiNZhFmzicaqe0JDMZ5mz0JDroNp(ycKcUCotg9yxKZ5JpMaTylNZKrp2f5C(4JjUW56Oyl64CMm6XUiNZhFmbaf8IweNZKrp2f5C(4JjGy0)NZzYpImHTmH8gt8Mt4Wht8)9beJ()m5G(LpMqrXr6TCimHIaZ0cNdsh35G0XLjZJHlR5EWhg18fYe4AkAr5M7AzYG5i6ye0e06DXKmn)fmoGp7pErlIjzA(lyCyUi8Fm5BHhtOFWfnerMyYAOlkAyh4xm5LfoSW3caWFp2Xnt(w49gM)cghYPVWwoNDcWVyNq5x8XK4atC7wny13yNkIfvNhLjfbUJl6uDSWrkwep3b1j8q6NjzA(lyCGyH3BAhwMq)GlAiImXeZooCzYZzM4rZ0mF3Tzm5qd42mcnJjpjgqWt6DMqrGzAHZbPJBU5UwMqMhVZhK85Y2eV58mzi(Xd9iWlIBzcfdJji)yomAY0c)Sta(yciNZob4CMCRH3CyutFM82SYX70oZZKiOfXVycal6MdJA6ZK3MvoEN2zEM4cAnb3)hFWfm(Jwe74Mjyw6aNZKJITOluoNjJESlY58Xht8)9bT4wihctok2IooNj)iYe2YozWKrp2f5C2jdoe(4JjFxliNZKFezcBzNqzYOh7ICo7ekhcF8XKHiaarqp2zoNZKrp2f5C(4Jjqk4Y5mz0JDroNp(ycig9)5CM8JityltiVXeV5eo8XeauWlArCotg9yxKZ5JpM4)7dig9)5qyc0ITCotg9yxKZ5JpM4cNRJITOJZzYOh7ICoF8XhtGRPOfLBURLjupK(IczY)OGt95xm5wdppCzYCwp8Y8ZKBn8MZIoMGVCvcf9vDOqO1SzYfhx4Cw0Xe8LRsOOVQdfcTMntEzHdlCA0Fp2jatOGxe3MdJMmTW30oSStWbCZekkosVOfX5mzKgrCotaTyw4eStaMCM7AzcO)F2rM8bPyRHStaMyi74MjdEi9IwetCZekMRmPSJBM4)7dOfZc5qyI5SJBMaAXSWqyNamb0IzHzNDcWeqlMfMBURLjG()zhzcOfZcNZJazcapc8IweqaRKQQQkCppeP6rUOGtbKk1dPplcNrqlMfQcSslAqjLusjLuIjq7rVLDCZeqlMfMn2jat(GuS1C2jaF8XKdgnzAHCotoZDTmb0)p7ita9)Zo(CM7AzYIBrhta9)ZoI)Ei9Iwetcoy1G4)NDe)9q6fTiLa4rGx0IubsfyLuvvvdoyvvvvmliftDn0veUF1zQ)fBbpGunJWQzHIxiEaaas1axyuZxObHvPEi9zr4m(YdaqyvuelSQb4dVte0ZNndubwfyLuvvvXSGumvtGdQZuhPgcKQBJMX7HvdOIFPM99Ed6)wGunWfg18fAGkWQMLAa3Uvbwjvvvv4EEis1e4Gk(T6KcRs9q6ZIWzCn0veUFLw0GskPKskPKskPKskPKskXeq))SJo0XLjbhSAq8)Zo6qhxLa4rGx0IubcyLG75HivQhsFweoJV8aaO0IgycO)F2rMaWJaVOfbK6IBrxyvpkEQaRKQQQQsQQQQraQlUfDQZMPAa(W7eb98z7jFc8oVt(tw4d)NiFEduVmxKsQQQQQQQQbhSAqYCbNsfGfQgI1JnSqaX)fwDWIm4ur7oO(Ic)QaSq1x2lt1qMtLIguXlXOsQQQQQQQQupK(SiCgdzo1zQ)fBbpGuNuy1SVxofBr30iawGunJWQHgwnGkWQaRKQQQQQQQkCppePKQQQ6Igusvvvvjvvv1ia1f3Io1zZunilNPZFMiRSnHbQu0GQhfp1zZunWfg18fAG6L5Iusvvvvvvvvjvvvvvvvvmliftfrh3WQpHvJGwuy1)rbN6hw9jS6GhsVOffwDn0veUF1zQzHIxiEaaas1axyuZxObHvPEi9zr4m(YdaqyvuelSAqHp8orqpF2ckvGvsvvvvvvvvjvvvvvvvvQhsFweoJi64QotfrhxvluL6H0NfHZ4lpaakPQQQQQQQs9q6ZIWzmcArQZuJGwKQfQs9q6ZIWzmcArkPQQQQQQQs9q6ZIWzCWdPx0IuNPAMkPQQQQQQQs9q6ZIWzCn0veUF1zQRHUIW9RAHQUvsvvvvvvvL6H0NfHZ4)OGt9vNP(pk4uFvlu1TsQQQQQQQQkPQQQQQQQgbOIOJR6SzQOiM6L5IusvvvvvvvvvvvL6H0NfHZOhDWOjtluDM6b9RsQQQQQQQQQQQQW98qKkak2FvsvvvvvvvDrdkPQQQQQQQc3ZdrQh0VkPQQQQQQQQKQQQ6IgusvvvvPfnOKsmb0)p740Gwetcoy1G4)NDCAqlsjaEe4fTivGawj4EEisL6H0NfHZye0IuArdmb0)p7i5OGt9zsWbRge))SJKJcoLsa8iWlArQabSsW98qKk1dPplcNX)rbN6R0IgyYIBr3Njz5mD(ZezLTjycO)F2XNmJdlta9)ZoYhtEzHdl8Taa83JDCBCYzKrgm5IJlComQPptEBw54DAN5zYlk4udqRRGyXSqoNDcWoUzNqzh3StgSJB2zsSJB(ycYpMdJMmTWp7eGjuWlArFoNjru84CMmyFa9)ZoYHWeq))SJmH6H0NfHZ44Qotnlu8YEwtJ)aPAGlmQ5l0avGvI6H0NfHZ4lpaaHvFcRs9q6ZIWzmcArQZuZ(Eexlg20iawGudeysUFpGkWkr9q6ZIWze0IzHQZuXpudewnqy1aHvdOIhqjLuIp(yIzhhUmzNa4XjZKxw4Wc5qyYllCyHZpyAzsav8fnCXyIhDWOjtlKZzcO)F2rMaWJaVOfPceWkPQQQgbOs9q6ZIWz0Joy0KPfQEzUiLuvvvvvvvPEi9zr4m6rhmAY0cvNPcGI9xLuvvvvvvvH75Hi1d6xLuvvvx0GsQQQQkPQQQc3ZdrQi7Ps9q6ZIWzCn0veUFvluL6H0NfHZ4AORiC)Q4NQzFV844ceWkTObLusjLusjLusjLusjLusjLusj(yYllCyHKiEUSJBJtoJmYGjXbMmXhCrdue4QAMFMebTONFCyzcENFUCMme)4HEe4fXTmHIHXKxw4WcdHco1a06IjelwCGjxCCHKiEUSta3mjZnAkZJDceQX3zcDyiErlII9CWOjtl8Z58XKxw4WcdIfZc5C2ja74MDcLDCZozWoUzNjXob4Jjru8E(hfE7a7eGj3A4rI45YobCZe80Ahzh3gZGp2juoNj3A4nhg10NjVnRC8oTZ8m5LfoSWGyXSqoNDcWoUzNqzh3StgSJB2zsSta(ycf8Iw0NZzsefpoNjd2hq))SJCimb0)p7itOEi9zr4moUQZuZcfVSN104pqQg4cJA(cnqfyLOEi9zr4m(Ydaqy1NWQupK(SiCgJGwK6m1SVhX1IHnncGfi1qDpj84KExfyLOEi9zr4mcAXSq1zQ4hQbcmzvZsn03FpSAaZidvZsn03FpS6KmdvZsn03FpSAav8akPKs8Xhtayr3CyutFM82SYX70oZZexqRj4()4dUGXF0Iyh3mbZsh4CMCuSfDHY5mz0JDroNp(yI)VpOf3c5qyYrXw0X5m5hrMWw2jdMm6XUiNZozWHWhFmbeJ()Cot(rKjSLjK3yI3Cch(yYqeaGiOh7mNZzYOh7ICoF8XeifC5CMm6XUiNZhFm57Ab5CM8Jityl7ektg9yxKZzNq5q4JpMaGcErlIZzYOh7ICoF8Xex4CDuSfDCotg9yxKZ5JpMaTylNZKrp2f5C(4Jj()(aIr)Foe(ycCnfTOCZDTmH6H0xuit(hfCQp)Ij3A45HltMZ6HxMFMCRH3Cw0Xe8LRsOOVQdfcTMntU44cNZIoMGVCvcf9vDOqO1SzYllCyHtJ(7XobyYq8Jh6rGxe3YekggtOGxe3MdJMmTW30oSStWbCZekkosVOfX5mzKgrCotoZDTmb0)p7itaTywyU5UwMa6)NDKj()(aAXSqoeMyi74MjFqk2Ai7eGjumxzszh3mb0IzHtWobyI5SJBMaAXSWqyNamb0IzHzNDcWKbpKErlIjUzcOfZcNZJazcapc8IweqaRKQQQkCppeP6rUOGtbKk1dPplcNrqlMfQcSslAqjLusjLuIjq7rVLDCZeqlMfMn2jat(GuS1C2jaF8XKdgnzAHCotoZDTmb0)p7ita9)Zo(CM7AzYIBrhta9)ZoI)Ei9Iwetcoy1G4)NDe)9q6fTiLa4rGx0IubsfyLuvvvdoyvvvvmliftDn0veUF1zQ)fBbpGunJWQzHIxiEaaas1axyuZxObHvPEi9zr4m(YdaqyvuelSQb4dVte0ZNndubwfyLuvvvXSGumvtGdQZuhPgcKQBJMX7HvdOIFPM99Ed6)wGunWfg18fAGkWQMLAa3Uvbwjvvvv4EEis1e4Gk(T6KcRs9q6ZIWzCn0veUFLw0GskPKskPKskPKskPKskXeq))SJo0XLjbhSAq8)Zo6qhxLa4rGx0IubcyLG75HivQhsFweoJV8aaO0IgycO)F2rMaWJaVOfbK6IBrxyvpkEQaRKQQQQsQQQQraQlUfDQZMPAa(W7eb98z7jFc8oVt(tw4d)NiFEduVmxKsQQQQQQQQbhSAqYCbNsfGfQgI1JnSqaX)fwDWIm4ur7oO(Ic)QaSq1x2lt1qMtLIguXlXOsQQQQQQQQupK(SiCgdzo1zQ)fBbpGuNuy1SVxofBr30iawGunJWQHgwnGkWQaRKQQQQQQQkCppePKQQQ6Igusvvvvjvvv1ia1f3Io1zZunilNPZFMiRSnHbQu0GQhfp1zZunWfg18fAG6L5Iusvvvvvvvvjvvvvvvvvmliftfrh3WQpHvJGwuy1)rbN6hw9jS6GhsVOffwDn0veUF1zQzHIxiEaaas1axyuZxObHvPEi9zr4m(YdaqyvuelSAqHp8orqpF2ckvGvsvvvvvvvvjvvvvvvvvQhsFweoJi64QotfrhxvluL6H0NfHZ4lpaakPQQQQQQQs9q6ZIWzmcArQZuJGwKQfQs9q6ZIWzmcArkPQQQQQQQs9q6ZIWzCWdPx0IuNPAMkPQQQQQQQs9q6ZIWzCn0veUF1zQRHUIW9RAHQUvsvvvvvvvL6H0NfHZ4)OGt9vNP(pk4uFvlu1TsQQQQQQQQkPQQQQQQQgbOIOJR6SzQOiM6L5IusvvvvvvvvvvvL6H0NfHZOhDWOjtluDM6b9RsQQQQQQQQQQQQW98qKkak2FvsvvvvvvvDrdkPQQQQQQQc3ZdrQh0VkPQQQQQQQQKQQQ6IgusvvvvPfnOKsmb0)p740Gwetcoy1G4)NDCAqlsjaEe4fTivGawj4EEisL6H0NfHZye0IuArdmb0)p7i5OGt9zsWbRge))SJKJcoLsa8iWlArQabSsW98qKk1dPplcNX)rbN6R0IgyYIBr3Njz5mD(ZezLTjycO)F2XNmJdlta9)ZoYhtWtRDKDCBmdMK5gnL5Xobc147m5IJlComQPptEBw54DAN5zYlk4udqRRGyXSqoNDcWoUzNqzh3StgSJB2zsSJB(yYllCyHVfaG)ESJBJtoJmYGjVSWHfYHWKxw4WcNFW0YKaQ4lA4IXKxw4WcdHco1a06IjelwCGjVSWHfsI45YoUno5mYidMebTONFCyzcENFUCMCXXfsI45YobCZe6Wq8Iwef75GrtMw4NZ5JjXbMG)w7OkEWiA4RAMFMebTi(ftm74WLj7eapozM4rhmAY0c5CMa6)NDKja8iWlArQabSsQQQQraQupK(SiCg9OdgnzAHQxMlsjvvvvvvvvQhsFweoJE0bJMmTq1zQaOy)vjvvvvvvvv4EEis9G(vjvvv1fnOKQQQQsQQQQW98qKkYEQupK(SiCgxdDfH7x1cvPEi9zr4mUg6kc3Vk(PA23lpoUabSslAqjLusjLusjLusjLusjLusjLuIpMG8J5WOjtl8ZobysefVN)rH3oWobyYTgEKiEUSta38XozW5mjcAr8lMaWIU5WOM(m5TzLJ3PDMNjUGwtW9)XhCbJ)OfXoUzcMLoW5m5Oyl6cLZzYOh7ICoF8Xe)FFqlUfYVyYrXw0X5m5hrMWw2jdMm6XUiNZoH6MdHDYGdHp(yY31cY5m5hrMWw2juMm6XUiNZoHYHWhFmzicaqe0JDMZ5mz0JDroNp(yc0ITCotg9yxKZ5JpM4)7dig9)5qycak4fTioNjJESlY58XhtCHZ1rXw0X5mz0JDroNp(ycKcUCotg9yxKZ5JpMaIr)FoNj)iYe2YeYBmXBoHdF8Xe4AkAr5M7Azc1dPVOqM8pk4uF(ftIO49aAhDHT3oWobyYTgEE4YK5SE4L5Nj3A4nNfDmbF5Qek6R6qHqRzZe80Ahzh3gZGjxCCHZzrhtWxUkHI(Qoui0A2m5LfoSWPr)9yNamzi(Xd9iWlIBzcfdJjE0bJMmTqoNjG()zhzcapc8IwKkqaRKQQQAeGk1dPplcNrp6GrtMwO6L5IusvvvvvvvL6H0NfHZOhDWOjtluDMkak2FvsvvvvvvvfUNhIupOFvsvvvDrdkPQQQQKQQQkCppePISNk1dPplcNX1qxr4(vTqvQhsFweoJRHUIW9RIFQM99YJJlqaR0IgusjLusjLusjLusjLusjLusjL4JjuWlIBZHrtMw4BAhw2j4aUzcffhPx0I4CMmsJioNjdEi9IwetCZKZCxlta9)ZoYKpifBnNDcWedzh3m5dsXwdzNamHI5ktk74MjGwmlCc2jatmNDCZeqlMfgc7eGjGwmlm7StaMaAXSWCZDTmb0)p7itaTyw4CEeita4rGx0IacyLuvvvH75HivpYffCkGuPEi9zr4mcAXSqvGvArdkPKskPKsmbAp6TSJBMaAXSWSXobyI)VpGwmlKdHp(yYbJMmTqoNjN5UwMa6)NDKjG()zhFoZDTmzXTOJjG()zhXFpKErlIjbhSAq8)ZoI)Ei9IwKsa8iWlArQaPcSsQQQQbhSQQQkMfKIPUg6kc3V6m1)ITGhqQMry1SqXlepaaaPAGlmQ5l0GWQupK(SiCgF5baiSkkIfw1a8H3jc65ZMbQaRcSsQQQQywqkMQjWb1zQJudbs1TrZ49WQbuXVuZ(EVb9FlqQg4cJA(cnqfyvZsnGB3QaRKQQQkCppePAcCqf)wDsHvPEi9zr4mUg6kc3VslAqjLusjLusjLusjLusjLycO)F2rh64YKGdwni()zhDOJRsa8iWlArQabSsW98qKk1dPplcNXxEaauArdmb0)p7ita4rGx0IasDXTOlSQhfpvGvsvvvvjvvv1iavK9uPEi9zr4mgYCQu0G6IBrN6SzQgKLZ05ptKv2MWavkAq1JIN6SzQg4cJA(cnq9YCrkPQQQQQQQQKQQQQQQQkMfKIPIOJBy1NWQrqlkS6)OGt9dR(ewDWdPx0IcRUg6kc3V6m1SqXlepaaaPAGlmQ5l0GWQupK(SiCgF5baiSkkIfwnOWhENiONpBbLkWkPQQQQQQQQKQQQQQQQk1dPplcNreDCvNPIOJRQfQs9q6ZIWz8LhaaLuvvvvvvvPEi9zr4mgbTi1zQrqls1cvPEi9zr4mgbTiLuvvvvvvvPEi9zr4mo4H0lArQZuntLuvvvvvvvPEi9zr4mUg6kc3V6m11qxr4(vTqv3kPQQQQQQQs9q6ZIWz8FuWP(QZu)hfCQVQfQ6wjvvvvvvvvLuvvvvvvvJaur0XvD2mvuet9YCrkPQQQQQQQQQQQs9q6ZIWz0Joy0KPfQot9G(vjvvvvvvvvvvvv4EEisfaf7VkPQQQQQQQUObLuvvvvvvvH75Hi1d6xLuvvvvvvvvsvvvDrdkPQQQQ0IgycO)F2XPbTiMeCWQbX)p740GwKsa8iWlArQabSsW98qKk1dPplcNXiOfP0IgycO)F2rYrbN6ZKGdwni()zhjhfCkLa4rGx0IubcyLG75HivQhsFweoJ)Jco1xPfnWKf3IUptYYz68NjYkBtewfF4DIGE(S9KpbEN3j)jl8H)tKppta9)Zo(KzCyzcO)F2r(ycf8Iw0NZzsefpoNjd2hq))SJCimb0)p7itOEi9zr4moUQZuZcfVSN104pqQg4cJA(cnqfyLOEi9zr4m(Ydaqy1NWQupK(SiCgJGwK6m1SVhX1IHnncGfi1qDhQB3tsfyLOEi9zr4mcAXSq1zQ4hQbChq1Sud993dRAMMHQzPg67VhwnJmunl1qF)9WQbuXdOe1dPplcNX1qxr4(vNP6Mp(ysefVN)rH3oWobyYfhx4CyutFM82SYX70oZZKxw4WcFlaa)9yh3gNCgzKbtErbNAaADfelMfY5Sta2Xn7ek74MDYGDCZotIDCZhtYCJMY8yNaHA8DMCRH3CyutFM82SYX70oZZKxw4Wc5qyYllCyHZpyAzsav8fnCXyYllCyHKiEUSJBJtoJmYGj0HH4fTik2ZbJMmTWpNZhtIGw0ZpoSmbVZpxotEzHdlmiwmlKZzNaSJB2ju2Xn7Kb74MDMe7eGpM8YchwyiuWPgGwxmHyXIdm5IJlKeXZLDc4MjXbMGxkA4JfhwvZ8ZeZooCzYobWJtMj3A4rI45YobCZeKFmhgnzAHF2jaFSZK4CMebTi(ftayr3CyutFM82SYX70oZZexqRj4()4dUGXF0Iyh3mbZsh4CMCuSfDHY5mz0JDroNp(yI)VpOf3c5xm5Oyl64CM8Jityl7Kbtg9yxKZzNm4q4JpMaIr)FoNj)iYe2YeYBmXBoHdFmX)3hqm6)ZHWeifC5CMm6XUiNZhFm57Ab5CM8Jityl7ektg9yxKZzNq5q4JpM4cNRJITOJZzYOh7ICoF8XeauWlArCotg9yxKZ5JpMaTylNZKrp2f5C(4JjdraaIGESZCoNjJESlY58XhFmbUMIwuU5UwMq9q6lkKj)Jco1NFXKikEpG2rxy7TdStaMCRHNhUmzoRhEz(zYTgEZzrhtWxUkHI(Qoui0A2mbpT2r2XTXmyYfhx4Cw0Xe8LRsOOVQdfcTMntEzHdlCA0Fp2jatgIF8qpc8I4wMqXWyIhDWOjtlKZzcO)F2rMaWJaVOfPceWkPQQQgbOs9q6ZIWz0Joy0KPfQEzUiLuvvvvvvvPEi9zr4m6rhmAY0cvNPcGI9xLuvvvvvvvH75Hi1d6xLuvvvx0GsQQQQkPQQQc3ZdrQi7Ps9q6ZIWzCn0veUFvluL6H0NfHZ4AORiC)Q4NQzFV844ceWkTObLusjLusjLusjLusjLusjLusj(ycf8I42Cy0KPf(M2HLDcoGBMqrXr6fTioNjJ0iIZzYGhsVOfXe3m5m31Yeq))SJm5dsXwZzNamXq2Xnt(GuS1q2jatOyUYKYoUzcOfZcNGDcWeZzh3mb0IzHHWobycOfZcZo7eGjGwmlm3Cxlta9)ZoYeqlMfoNhbYeaEe4fTiGawjvvvv4EEis1JCrbNcivQhsFweoJGwmlufyLw0GskPKskPetG2JEl74MjGwmlmBStaM4)7dOfZc5q4JpMCWOjtlKZzYzURLjG()zhzcO)F2XNZCxltwCl6ycO)F2r83dPx0IysWbRge))SJ4VhsVOfPeapc8IwKkqQaRKQQQAWbRQQQIzbPyQRHUIW9Rot9Vyl4bKQzewnlu8cXdaaqQg4cJA(cniSk1dPplcNXxEaacRIIyHvnaF4DIGE(SzGkWQaRKQQQkMfKIPAcCqDM6i1qGuDB0mEpSAav8l1SV3Bq)3cKQbUWOMVqdubw1Sud42TkWkPQQQc3ZdrQMahuXVvNuyvQhsFweoJRHUIW9R0IgusjLusjLusjLusjLusjMa6)ND0HoUmj4GvdI)F2rh64Qeapc8IwKkqaReCppePs9q6ZIWz8LhaaLw0ata9)ZoYeaEe4fTiGuxCl6cR6rXtfyLuvvvvsvvvncqDXTOtD2mvdWhENiONpBp5tG35DYFYcF4)e5ZBG6L5Iusvvvvvvvn4GvdsMl4uQaSq1qSESHfci(VWQdwKbNkA3b1xu4xfGfQ(YEzQgYCQu0GkEjgvsvvvvvvvL6H0NfHZyiZPot9Vyl4bK6KcRM99YPyl6MgbWcKQzewn0WQbubwfyLuvvvvvvvH75HiLuvvvx0GsQQQQkPQQQgbOU4w0PoBMQbz5mD(ZezLTjmqLIgu9O4PoBMQbUWOMVqduVmxKsQQQQQQQQkPQQQQQQQIzbPyQi64gw9jSAe0IcR(pk4u)WQpHvh8q6fTOWQRHUIW9Rotnlu8cXdaaqQg4cJA(cniSk1dPplcNXxEaacRIIyHvdk8H3jc65ZwqPcSsQQQQQQQQkPQQQQQQQs9q6ZIWzerhx1zQi64QAHQupK(SiCgF5baqjvvvvvvvvQhsFweoJrqlsDMAe0IuTqvQhsFweoJrqlsjvvvvvvvvQhsFweoJdEi9IwK6mvZujvvvvvvvvQhsFweoJRHUIW9RotDn0veUFvlu1TsQQQQQQQQupK(SiCg)hfCQV6m1)rbN6RAHQUvsvvvvvvvvjvvvvvvv1iaveDCvNntffXuVmxKsQQQQQQQQQQQQupK(SiCg9OdgnzAHQZupOFvsvvvvvvvvvvvfUNhIubqX(RsQQQQQQQQlAqjvvvvvvvv4EEis9G(vjvvvvvvvvLuvvvx0GsQQQQkTObLuIjG()zhNg0IysWbRge))SJtdArkbWJaVOfPceWkb3ZdrQupK(SiCgJGwKslAGjG()zhjhfCQptcoy1G4)NDKCuWPucGhbErlsfiGvcUNhIuPEi9zr4m(pk4uFLw0atwCl6(mjlNPZFMiRSnbta9)Zo(KzCyzcO)F2r(ycf8Iw0NZzsefpoNjd2hq))SJCimb0)p7itOEi9zr4moUQZuZcfVSN104pqQg4cJA(cnqfyLOEi9zr4m(Ydaqy1NWQupK(SiCgJGwK6m1SVhX1IHnncGfi1a4Xmmd8OzQcSsupK(SiCgbTywO6mv8d1qZyYQMLAOV)Ey1aUNKQzPg67Vhw1TQzPg67VhwnGkEaLusj(4Jjru8E(hfE7a7eGjxCCHZHrn9zYBZkhVt7mptEzHdl8Taa83JDCBCYzKrgm5ffCQbO1vqSywiNZobyh3StOSJB2jd2Xn7mj2XnFmjZnAkZJDceQX3zYTgEZHrn9zYBZkhVt7mptEzHdlKdHjVSWHfo)GPLjbuXx0WfJjVSWHfsI45YoUno5mYidMqhgIx0IOyphmAY0c)CoFmjcArp)4WYe8o)C5m5LfoSWGyXSqoNDcWoUzNqzh3StgSJB2zsSta(yYllCyHHqbNAaADXeIfloWKloUqsepx2jGBMehyYCy0X9Sit(v1m)mXSJdxMSta84KzYTgEKiEUSta3mb5hZHrtMw4NDcWh78oNZKBn8MdJA6ZK3MvoEN2zEM8YchwyqSywiNZobyh3StOSJB2jd2Xn7mj2jaFmHcErl6Z5mjIIhNZKb7dO)F2roeMa6)NDKjupK(SiCghx1zQzHIx2ZAA8hivdCHrnFHgOcSsupK(SiCgF5baiS6tyvQhsFweoJrqlsDMA23J4AXWMgbWcKAa8Ozo5mMKkWkr9q6ZIWze0IzHQZuXpudeQzQAwQH((7Hvdmz3QMLAOV)Ey1qDpzvZsn03FpSAav8akPKs8Xhtayr3CyutFM82SYX70oZZexqRj4()4dUGXF0Iyh3mbZsh4CMCuSfDHY5mz0JDroNp(yI)VpOf3c5xm5Oyl64CM8Jityl7Kbtg9yxKZzNm4q4JpMaIr)FoNj)iYe2YeYBmXBoHdFmzicaqe0JDMZ5mz0JDroNp(ycKcUCotg9yxKZ5JpM8DTGCot(rKjSLDcLjJESlY5StOCi8XhtCHZ1rXw0X5mz0JDroNp(yI)VpGy0)NdHjql2Y5mz0JDroNp(ycak4fTioNjJESlY58XhFmbUMIwuU5UwMq9q6lkKj)Jco1NFXKikEpG2rxy7TdStaMCRHNhUmzoRhEz(zYTgEZzrhtWxUkHI(Qoui0A2m5IJlCol6yc(Yvju0x1HcHwZMjVSWHfon6Vh7eGjVSWHfgcfCQbO1ftiwS4at8OdgnzAHCota9)ZoYeaEe4fTivGawjvvv1iavQhsFweoJE0bJMmTq1lZfPKQQQQQQQk1dPplcNrp6GrtMwO6mvauS)QKQQQQQQQkCppePEq)QKQQQ6Igusvvvvjvvvv4EEisfzpvQhsFweoJRHUIW9RAHQupK(SiCgxdDfH7xf)un77LhhxGawPfnOKskPKskPKskPKskPKskPKskXhtOGxe3MdJMmTW30oSStWbCZekkosVOfX5mzKgrCotg8q6fTiM4MjN5UwMa6)NDKjFqk2Ao7eGjgYoUzYhKITgYobycfZvMu2XntaTywyiStaMyo74MjGwmlCc2jataTywy2zNamb0IzH5M7AzcO)F2rMaAXSW58iqMaWJaVOfbeWkPQQQc3ZdrQEKlk4uaPs9q6ZIWze0IzHQaR0IgusjLusjLyc0E0Bzh3mb0IzHzJDcWe)FFaTywihcF8XKdgnzAHCotoZDTmb0)p7ita9)Zo(CM7AzYIBrhta9)ZoI)Ei9Iwetcoy1G4)NDe)9q6fTiLa4rGx0IubsfyLuvvvdoyvvvvmliftDn0veUF1zQ)fBbpGunJWQzHIxiEaaas1axyuZxObHvPEi9zr4m(YdaqyvuelSQb4dVte0ZNndubwfyLuvvvXSGumvtGdQZuhPgcKQBJMX7HvdOIFPM99Ed6)wGunWfg18fAGkWQMLAa3Uvbwjvvvv4EEis1e4Gk(T6KcRs9q6ZIWzCn0veUFLw0GskPKskPKskPKskPKskXeq))SJo0XLjbhSAq8)Zo6qhxLa4rGx0IubcyLG75HivQhsFweoJV8aaO0IgycO)F2rMaWJaVOfbK6IBrxyvpkEQaRKQQQQsQQQQraQlUfDQZMPAa(W7eb98z7jFc8oVt(tw4d)NiFEduVmxKsQQQQQQQQbhSAqYCbNsfGfQgI1JnSqaX)fwDWIm4ur7oO(Ic)QaSq1x2lt1qMtLIguXlXOsQQQQQQQQupK(SiCgdzo1zQ)fBbpGuNuy1SVxofBr30iawGunJWQHgwnGkWQaRKQQQQQQQkCppePKQQQ6Igusvvvvjvvv1ia1f3Io1zZunilNPZFMiRSnHbQu0GQhfp1zZunWfg18fAG6L5Iusvvvvvvvvjvvvvvvvvmliftfrh3WQpHvJGwuy1)rbN6hw9jS6GhsVOffwDn0veUF1zQzHIxiEaaas1axyuZxObHvPEi9zr4m(YdaqyvuelSAqHp8orqpF2ckvGvsvvvvvvvvjvvvvvvvvQhsFweoJi64QotfrhxvluL6H0NfHZ4lpaakPQQQQQQQs9q6ZIWzmcArQZuJGwKQfQs9q6ZIWzmcArkPQQQQQQQs9q6ZIWzCWdPx0IuNPAMkPQQQQQQQs9q6ZIWzCn0veUF1zQRHUIW9RAHQUvsvvvvvvvL6H0NfHZ4)OGt9vNP(pk4uFvlu1TsQQQQQQQQkPQQQQQQQgbOIOJR6SzQOiM6L5IusvvvvvvvvvvvL6H0NfHZOhDWOjtluDM6b9RsQQQQQQQQQQQQW98qKkak2FvsvvvvvvvDrdkPQQQQQQQc3ZdrQh0VkPQQQQQQQQKQQQ6IgusvvvvPfnOKsmb0)p740Gwetcoy1G4)NDCAqlsjaEe4fTivGawj4EEisL6H0NfHZye0IuArdmb0)p7i5OGt9zsWbRge))SJKJcoLsa8iWlArQabSsW98qKk1dPplcNX)rbN6R0IgyYIBr3Njz5mD(ZezLTjycO)F2XNmJdlta9)ZoYhtWtRDKDCBmdMerX75Fu4TdStaMCXXfohg10NjVnRC8oTZ8m5ffCQbO1vqSywiNZobyh3StOSJB2jd2Xn7mj2XnFmb5hZHrtMw4NDcWKxw4WcFlaa)9yh3gNCgzKbtYCJMY8yNaHA8DM8YchwihctEzHdlC(btltcOIVOHlgtEzHdlKeXZLDCBCYzKrgmjcArp)4WYe8o)C5mjoWK5G2)9csrdQM5NjxCCHKiEUSta3mHomeVOfrXEoy0KPf(5C(yYq8Jh6rGxe3Yekggtm74WLj7eapozMebTi(ftU1WJeXZLDc4Mp2Xm5CMCRH3CyutFM82SYX70oZZeaw0nhg10NjVnRC8oTZ8mXf0AcU)p(Gly8hTi2XntWS0boNjhfBrxOCotg9yxKZ5JpM4)7dAXTq(ftok2IooNj)iYe2YobyYOh7ICo7KbhcF8Xeqm6)Z5m5hrMWwMqEJjEZjC4Jj()(CuSfDCimzicaqe0JDMZ5mz0JDroNp(ycKcUCotg9yxKZ5JpM8DTGCot(rKjSLDcLjJESlY5StOCi8XhtaqbVOfX5mz0JDroNp(yIlCUok2IooNjJESlY58XhtGwSLZzYOh7ICoF8Xe)FFaXO)phcFmbUMIwuU5UwMq9q6lkKj)Jco1NFXKBn88WLjZz9WlZptU1WBol6yc(Yvju0x1HcHwZMjxCCHZzrhtWxUkHI(Qoui0A2m5LfoSWPr)9yNam5LfoSWqOGtnaTUycXIfhyYq8Jh6rGxe3Yekggt8OdgnzAHCota9)ZoYeaEe4fTivGawjvvv1iavQhsFweoJE0bJMmTq1lZfPKQQQQQQQk1dPplcNrp6GrtMwO6mvauS)QKQQQQQQQkCppePEq)QKQQQ6Igusvvvvjvvvv4EEisfzpvQhsFweoJRHUIW9RAHQupK(SiCgxdDfH7xf)un77LhhxGawPfnOKskPKskPKskPKskPKskPKskXhtOGxe3MdJMmTW30oSStWbCZekkosVOfX5mzKgrCotg8q6fTiM4MjN5UwMa6)NDKjFqk2Ai7eGj()(aAXSqoeMaAXSWCZDTmb0)p7itOyUYKYoUzcOfZcdHDcWeZzh3mb0IzHtWobycOfZcZo7eGjgYoUzcOfZcNZJazcapc8IweqaRKQQQkCppeP6rUOGtbKk1dPplcNrqlMfQcSslAqjLusjLuIjq7rVLDCZeqlMfMn2jat(GuS1C2jaF8XKdgnzAHCotoZDTmb0)p7ita9)Zo(CM7AzYIBrhta9)ZoI)Ei9Iwetcoy1G4)NDe)9q6fTiLa4rGx0IubsfyLuvvvdoyvvvvmliftDn0veUF1zQ)fBbpGunJWQzHIxiEaaas1axyuZxObHvPEi9zr4m(YdaqyvuelSQb4dVte0ZNndubwfyLuvvvXSGumvtGdQZuhPgcKQBJMX7HvdOIFPM99Ed6)wGunWfg18fAGkWQMLAa3Uvbwjvvvv4EEis1e4Gk(T6KcRs9q6ZIWzCn0veUFLw0GskPKskPKskPKskPKskXeq))SJo0XLjbhSAq8)Zo6qhxLa4rGx0IubcyLG75HivQhsFweoJV8aaO0IgycO)F2rMaWJaVOfbK6IBrxyvpkEQaRKQQQQsQQQQraQlUfDQZMPAa(W7eb98z7jFc8oVt(tw4d)NiFEduVmxKsQQQQQQQQbhSAqYCbNsfGfQgI1JnSqaX)fwDWIm4ur7oO(Ic)QaSq1x2lt1qMtLIguXlXOsQQQQQQQQupK(SiCgdzo1zQ)fBbpGuNuy1SVxofBr30iawGunJWQHgwnGkWQaRKQQQQQQQkCppePKQQQ6Igusvvvvjvvv1ia1f3Io1zZunilNPZFMiRSnHbQu0GQhfp1zZunWfg18fAG6L5Iusvvvvvvvvjvvvvvvvvmliftfrh3WQpHvJGwuy1)rbN6hw9jS6GhsVOffwDn0veUF1zQzHIxiEaaas1axyuZxObHvPEi9zr4m(YdaqyvuelSAqHp8orqpF2ckvGvsvvvvvvvvjvvvvvvvvQhsFweoJi64QotfrhxvluL6H0NfHZ4lpaakPQQQQQQQs9q6ZIWzmcArQZuJGwKQfQs9q6ZIWzmcArkPQQQQQQQs9q6ZIWzCWdPx0IuNPAMkPQQQQQQQs9q6ZIWzCn0veUF1zQRHUIW9RAHQUvsvvvvvvvL6H0NfHZ4)OGt9vNP(pk4uFvlu1TsQQQQQQQQkPQQQQQQQgbOIOJR6SzQOiM6L5IusvvvvvvvvvvvL6H0NfHZOhDWOjtluDM6b9RsQQQQQQQQQQQQW98qKkak2FvsvvvvvvvDrdkPQQQQQQQc3ZdrQh0VkPQQQQQQQQKQQQ6IgusvvvvPfnOKsmb0)p740Gwetcoy1G4)NDCAqlsjaEe4fTivGawj4EEisL6H0NfHZye0IuArdmb0)p7i5OGt9zsWbRge))SJKJcoLsa8iWlArQabSsW98qKk1dPplcNX)rbN6R0IgyYIBr3Njz5mD(ZezLTjycO)F2XNmJdlta9)ZoYhtWtRDKDCBmdMK5gnL5Xobc147m5IJlComQPptEBw54DAN5zYlk4udqRRGyXSqoNDcWoUzNqzh3StgSJB2zsSJB(yYllCyHbXIzHCo7eGDCZoHYoUzNmyh3SZKyNa8XKxw4WcFlaa)9yh3gNCgzKbtEzHdlKdHjVSWHfo)GPLjbuXx0WfJjVSWHfsI45YoUno5mYidMehycEWiA4BrMunZptIGw0ZpoSmbVZpxotOddXlAruSNdgnzAHFoNpMCXXfsI45YobCZek4fTOpNZKikECotgSpG()zh5qycO)F2rMq9q6ZIWzCCvNPMfkEzpRPXFGunWfg18fAGkWkr9q6ZIWz8LhaGWQpHvPEi9zr4mgbTi1zQzFpIRfdBAealqQH6oWKXJtwfyLOEi9zr4mcAXSq1zQ4hQH((7QMLAOV)Ey1qF)DvZsn03FpSAOV)UQzPg67VhwnGkEaLusj(4JjMDC4YKDcGhNmtIGwe)Iji)yomAY0c)StaMerX75Fu4TdStaMCRHhjINl7eWnFSJzW5m5LfoSWGyXSqoNDcWoUzNqzh3StgSJB2zsSta(ycf8Iw0NZzsefpoNjd2hq))SJCimb0)p7itOEi9zr4moUQZuZcfVSN104pqQg4cJA(cnqfyLOEi9zr4m(Ydaqy1NWQupK(SiCgJGwK6m1SVhX1IHnncGfi1at2mMSzmjvGvI6H0NfHZiOfZcvNPIFOgWmunl1qF)9WQ4rZu1Sud993dRgAOVRAwQH((7HvdOIhqjQhsFweoJGy)JcoL6m1SVhX1IHnncGfi1qNuOHozZufy(4JjaSOBomQPptEBw54DAN5zIlO1eC)F8bxW4pArSJBMGzPdCotok2IUq5CMm6XUiNZhFmX)3h0IBH8lMCuSfDCot(rKjSLDYGjJESlY5StgCi8XhtaXO)pNZKFezcBzc5nM4nNWHpMmebaic6XoZ5CMm6XUiNZhFmbsbxoNjJESlY58Xht(UwqoNj)iYe2YoHYKrp2f5C2juoe(4JjUW56Oyl64CMm6XUiNZhFmX)3hqm6)ZHWeOfB5CMm6XUiNZhFmbaf8IweNZKrp2f5C(4JpMaxtrlk3CxltOEi9ffYK)rbN6ZVysefVhq7OlS92b2jatU1WZdxMmN1dVm)m5wdV5SOJj4lxLqrFvhkeAnBMCXXfoNfDmbF5Qek6R6qHqRzZKxw4WcNg93JDcWKxw4WcdHco1a06IjelwCGjG()zhZxdpMOKsa8iWlArQabSsQQQQywqkMQ3vy1NWQpHvbTE0Potnlu8cXdaaqQbLlmQ5lmOcRs9q6ZIWzee7FuWPcRIIyHvdk8H3jc65ZwqPcSsQQQQkPQQQc3ZdrQExQu0G6i1qGudewf06rNkWQwOAqfukTObLusjLusjLusjLusjLusjLusjLusjLycf8I42Cy0KPf(M2HLDcoGBMqrXr6fTioNjJ0iIZzYhKITgYobyYzURLjG()zhzcOfZcZn31Yeq))SJmX)3hqlMfYHWedzh3mzWdPx0IyIBMqXCLjLDCZeqlMfob7eGjMZoUzcOfZcdHDcWeqlMfMD2jataTyw4CEeita4rGx0IacyLuvvvH75HivpYffCkGuPEi9zr4mcAXSqvGvArdkPKskPKsmbAp6TSJBMaAXSWSXobyYhKITMZob4JpMCWOjtlKZzYzURLjG()zhzcO)F2XNZCxltwCl6ycO)F2r83dPx0IysWbRge))SJ4VhsVOfPeapc8IwKkqQaRKQQQAWbRQQQIzbPyQRHUIW9Rot9Vyl4bKQzewnlu8cXdaaqQg4cJA(cniSk1dPplcNXxEaacRIIyHvnaF4DIGE(SzGkWQaRKQQQkMfKIPAcCqDM6i1qGuDB0mEpSAav8l1SV3Bq)3cKQbUWOMVqdubw1Sud42TkWkPQQQc3ZdrQMahuXVvNuyvQhsFweoJRHUIW9R0IgusjLusjLusjLusjLusjMa6)ND0HoUmj4GvdI)F2rh64Qeapc8IwKkqaReCppePs9q6ZIWz8LhaaLw0ata9)ZoYeaEe4fTiGuxCl6cR6rXtfyLuvvvvsvvvncqDXTOtD2mvdWhENiONpBp5tG35DYFYcF4)e5ZBG6L5Iusvvvvvvvn4GvdsMl4uQaSq1qSESHfci(VWQdwKbNkA3b1xu4xfGfQ(YEzQgYCQu0GkEjgvsvvvvvvvL6H0NfHZyiZPot9Vyl4bK6KcRM99YPyl6MgbWcKQzewn0WQbubwfyLuvvvvvvvH75HiLuvvvx0GsQQQQkPQQQgbOU4w0PoBMQbz5mD(ZezLTjmqLIgu9O4PoBMQbUWOMVqduVmxKsQQQQQQQQkPQQQQQQQIzbPyQi64gw9jSAe0IcR(pk4u)WQpHvh8q6fTOWQRHUIW9Rotnlu8cXdaaqQg4cJA(cniSk1dPplcNXxEaacRIIyHvdk8H3jc65ZwqPcSsQQQQQQQQkPQQQQQQQs9q6ZIWzerhx1zQi64QAHQupK(SiCgF5baqjvvvvvvvvQhsFweoJrqlsDMAe0IuTqvQhsFweoJrqlsjvvvvvvvvQhsFweoJdEi9IwK6mvZujvvvvvvvvQhsFweoJRHUIW9RotDn0veUFvlu1TsQQQQQQQQupK(SiCg)hfCQV6m1)rbN6RAHQUvsvvvvvvvvjvvvvvvv1iaveDCvNntffXuVmxKsQQQQQQQQQQQQupK(SiCg9OdgnzAHQZupOFvsvvvvvvvvvvvfUNhIubqX(RsQQQQQQQQlAqjvvvvvvvv4EEis9G(vjvvvvvvvvLuvvvx0GsQQQQkTObLuIjG()zhNg0IysWbRge))SJtdArkbWJaVOfPceWkb3ZdrQupK(SiCgJGwKslAGjG()zhjhfCQptcoy1G4)NDKCuWPucGhbErlsfiGvcUNhIuPEi9zr4m(pk4uFLw0atwCl6(mjlNPZFMiRSnbta9)Zo(KzCyzcO)F2r(yse0I4xmjII3Z)OWBhyNam5IJlComQPptEBw54DAN5zYlk4udqRRGyXSqoNDcWoUzNqzh3StgSJB2zsSJB(ycYpMdJMmTWp7eGj4P1oYoUnMbtYCJMY8yNaHA8DM8YchwihctEzHdlC(btltcOIVOHlgtEzHdlKeXZLDCBCYzKrgmjcArp)4WYe8o)C5m5wdV5WOM(m5TzLJ3PDMNj0HH4fTik2ZbJMmTWpNZhtU44cjr8CzNaUzYq8Jh6rGxe3YekggtIdmjiq6ptv8gnL5HIitQM5NjMDC4YKDcGhNmtEzHdl8Taa83JDCBCYzKrgmXJoy0KPfY5mb0)p7ita4rGx0IubcyLuvvvJauPEi9zr4m6rhmAY0cvVmxKsQQQQQQQQupK(SiCg9OdgnzAHQZubqX(RsQQQQQQQQW98qK6b9RsQQQQlAqjvvvvLuvvvH75HivK9uPEi9zr4mUg6kc3VQfQs9q6ZIWzCn0veUFv8t1SVxECCbcyLw0GskPKskPKskPKskPKskPKskPeFm5wdpsepx2jGB(yNjZ5mbGfDZHrn9zYBZkhVt7mptCbTMG7)Jp4cg)rlIDCZemlDGZzYrXw0fkNZKrp2f5C(4Jj()(GwClKFXKJITOJZzYpImHTStgmz0JDroNDYGdHp(yY31cY5m5hrMWw2juMm6XUiNZoHYHWhFmzicaqe0JDMZ5mz0JDroNp(ycKcUCotg9yxKZ5JpMaIr)FoNj)iYe2YeYBmXBoHdFmXfoxhfBrhNZKrp2f5C(4JjaOGx0I4CMm6XUiNZhFmbAXwoNjJESlY58Xht8)9beJ()Ci8Xe4AkAr5M7Azc1dPVOqM8pk4uF(ftIO49aAhDHT3oWobyYTgEE4YK5SE4L5Nj3A4nNfDmbF5Qek6R6qHqRzZKloUW5SOJj4lxLqrFvhkeAnBM8Ychw40O)EStaM8YchwyiuWPgGwxmHyXIdmzi(Xd9iWlIBzcfdJjuWlIBZHrtMw4BAhw2j4aUzcffhPx0I4CMmsJioNjGwmlCc2jatoZDTmb0)p7itg8q6fTiM4MjFqk2Ai7eGjgYoUzcfZvMu2Xnt8)9b0IzHCimXC2XntaTywyiStaMaAXSWSZobycOfZcZn31Yeq))SJmb0IzHZ5rGmbGhbErlciGvsvvvfUNhIu9ixuWPasL6H0NfHZiOfZcvbwPfnOKskPKskXeO9O3YoUzcOfZcZg7eGjFqk2Ao7eGp(yYbJMmTqoNjN5UwMa6)NDKjG()zhFoZDTmzXTOJjG()zhXFpKErlIjbhSAq8)ZoI)Ei9IwKsa8iWlArQaPcSsQQQQbhSQQQkMfKIPUg6kc3V6m1)ITGhqQMry1SqXlepaaaPAGlmQ5l0GWQupK(SiCgF5baiSkkIfw1a8H3jc65ZMbQaRcSsQQQQywqkMQjWb1zQJudbs1TrZ49WQbuXVuZ(EVb9FlqQg4cJA(cnqfyvZsnGB3QaRKQQQkCppePAcCqf)wDsHvPEi9zr4mUg6kc3VslAqjLusjLusjLusjLusjLycO)F2rh64YKGdwni()zhDOJRsa8iWlArQabSsW98qKk1dPplcNXxEaauArdmb0)p7ita4rGx0IasDXTOlSQhfpvGvsvvvvjvvv1ia1f3Io1zZunilNPZFMiRSnHbQu0GQhfp1zZunWfg18fAG6L5Iusvvvvvvvvjvvvvvvvvmliftfrh3WQpHvJGwuy1)rbN6hw9jS6GhsVOffwDn0veUF1zQzHIxiEaaas1axyuZxObHvPEi9zr4m(YdaqyvuelSAqHp8orqpF2ckvGvsvvvvvvvvjvvvvvvvvQhsFweoJi64QotfrhxvluL6H0NfHZ4lpaakPQQQQQQQs9q6ZIWzmcArQZuJGwKQfQs9q6ZIWzmcArkPQQQQQQQs9q6ZIWzCWdPx0IuNPAMkPQQQQQQQs9q6ZIWzCn0veUF1zQRHUIW9RAHQUvsvvvvvvvL6H0NfHZ4)OGt9vNP(pk4uFvlu1TsQQQQQQQQkPQQQQQQQgbOIOJR6SzQOiM6L5IusvvvvvvvvvvvL6H0NfHZOhDWOjtluDM6b9RsQQQQQQQQQQQQW98qKkak2FvsvvvvvvvDrdkPQQQQQQQc3ZdrQh0VkPQQQQQQQQKQQQ6IgusvvvvPfnWeq))SJtdArmj4GvdI)F2XPbTiLa4rGx0IubcyLG75HivQhsFweoJrqlsPfnWeq))SJKJco1NjbhSAq8)Zosok4ukbWJaVOfPceWkb3ZdrQupK(SiCg)hfCQVslAGjlUfDFMKLZ05ptKv2MGjG()zhFYmoSmb0)p7iFm5wdpsepx2jGBM8Ychw4Bba4Vh7424KZiJmysefVN)rH3oWobysMB0uMh7eiuJVZKloUW5WOM(m5TzLJ3PDMNjVOGtnaTUcIfZc5C2ja74MDcLDCZozWoUzNjXoU5JjrqlIFXeZooCzYobWJtMjuWlArFoNjru84CMmyFa9)ZoYHWeq))SJmH6H0NfHZ44Qotnlu8YEwtJ)aPAGlmQ5l0avGvI6H0NfHZ4lpaaHvFcRs9q6ZIWzmcArQZuZ(Eexlg20iawGud1DGjpjZufyLOEi9zr4mcAXSq1zQ4hQbmt3QMLAOV)Ey1aMPBvZsn03FpSAaZ0TQzPg67VhwnGkEaLusj(4JjVSWHfYHWKxw4WcNFW0YKaQ4lA4IXKxw4WcdIfZc5C2ja74MDcLDCZozWoUzNjXob4JjVSWHfsI45YoUno5mYidMehyc5SWXxWiY0cvnZptIGw0ZpoSmbVZpxotU1WBomQPptEBw54DAN5zYfhxijINl7eWntOddXlAruSNdgnzAHFoNpMGNw7i742ygmb5hZHrtMw4NDcWep6GrtMwiNZeq))SJmbGhbErlsfiGvsvvvncqL6H0NfHZOhDWOjtlu9YCrkPQQQQQQQs9q6ZIWz0Joy0KPfQotfaf7VkPQQQQQQQc3ZdrQh0VkPQQQUObLuvvvvsvvvfUNhIur2tL6H0NfHZ4AORiC)QwOk1dPplcNX1qxr4(vXpvZ(E5XXfiGvArdkPKskPKskPKskPKskPKskPKs8Xh7Gh5CMqbVOf95CMerXJZzYG9b0)p7ihcta9)ZoYeQhsFweoJJR6m1SqXl7znn(dKQbUWOMVqdubwjQhsFweoJV8aaew9jSk1dPplcNXiOfPotn77rCTyytJaybsn0aVBgt(DvGvI6H0NfHZig9NP6m1SVhX1IHnncGfi1qNK7jpPqvbwjQhsFweoJGwmluDMk(HAOV)UQzPg67Vhw1TQzPg67Vhw1TQzPg67VhwnGkEaLusj(4JjaSOBomQPptEBw54DAN5zIlO1eC)F8bxW4pArSJBMGzPdCotok2IUq5CMm6XUiNZhFmX)3h0IBH8lMCuSfDCot(rKjSLDcLjJESlY5StgCi8Xht(UwqoNj)iYe2YoHYKrp2f5C2juoe(4Jj()(CuSfDCimzicaqe0JDMZ5mz0JDroNp(ycKcUCotg9yxKZ5JpMaIr)FoNj)iYe2YeYBmXBoHdFmXfoxhfBrhNZKrp2f5C(4Jj()(aIr)FoeMaTylNZKrp2f5C(4JjaOGx0I4CMm6XUiNZhF8Xe4AkAr5M7Azc1dPVOqM8pk4uF(ftU1WZdxMmN1dVm)m5wdV5SOJj4lxLqrFvhkeAnBMCXXfoNfDmbF5Qek6R6qHqRzZKxw4WcNg93JDcWKH4hp0JaViULjummMa6)NDmFn8ycapc8IwKkqaRKQQQkMfKIP6Dfw9jS6tyvqRhDQZuZcfp8FF5baai1G6Oqt7fuHvPEi9zr4mIr)zgwffXcRgu4dVte0ZNTGsfyLuvvvvsvvvfUNhIu9UuPOb1rQHaPgiSkO1JovGvTq1GkOuArdkPKskPKskPKskPKskPKskPKskPKskXek4fXT5WOjtl8nTdl7eCa3mHIIJ0lArCotgPreNZe)FFaTywihctoZDTmb0)p7itmKDCZeqlMfob7eGjGwmlm3Cxlta9)ZoYekMRmPSJBM8bPyRHStaMyo74MjGwmlme2jataTywy2zNamzWdPx0IyIBMaAXSW58iqMaWJaVOfbeWkPQQQc3ZdrQEKlk4uaPs9q6ZIWze0IzHQaR0IgusjLusjLyc0E0Bzh3mb0IzHzJDcWKpifBnNDcWhFm5GrtMwiNZKZCxlta9)ZoYeq))SJpN5UwMS4w0Xeq))SJ4VhsVOfXKGdwni()zhXFpKErlsjaEe4fTivGubwjvvv1GdwvvvfZcsXuxdDfH7xDM6FXwWdivZiSAwO4fIhaaGunWfg18fAqyvQhsFweoJV8aaewffXcRAa(W7eb98zZavGvbwjvvvvmlift1e4G6m1rQHaP62Oz8Ey1aQ4xQzFV3G(VfivdCHrnFHgOcSQzPgWTBvGvsvvvfUNhIunboOIFRoPWQupK(SiCgxdDfH7xPfnOKskPKskPKskPKskPKsmb0)p7OdDCzsWbRge))SJo0XvjaEe4fTivGawj4EEisL6H0NfHZ4lpaakTObMa6)NDKja8iWlAraPU4w0fw1JINkWkPQQQQKQQQAeG6IBrN6SzQgKLZ05ptKv2MWavkAq1JIN6SzQg4cJA(cnq9YCrkPQQQQQQQQKQQQQQQQkMfKIPIOJBy1NWQrqlkS6)OGt9dR(ewDWdPx0IcRUg6kc3V6m1SqXlepaaaPAGlmQ5l0GWQupK(SiCgF5baiSkkIfwnOWhENiONpBbLkWkPQQQQQQQQKQQQQQQQk1dPplcNreDCvNPIOJRQfQs9q6ZIWz8LhaaLuvvvvvvvPEi9zr4mgbTi1zQrqls1cvPEi9zr4mgbTiLuvvvvvvvPEi9zr4mo4H0lArQZuntLuvvvvvvvPEi9zr4mUg6kc3V6m11qxr4(vTqv3kPQQQQQQQs9q6ZIWz8FuWP(QZu)hfCQVQfQ6wjvvvvvvvvLuvvvvvvvJaur0XvD2mvuet9YCrkPQQQQQQQQQQQs9q6ZIWz0Joy0KPfQot9G(vjvvvvvvvvvvvv4EEisfaf7VkPQQQQQQQUObLuvvvvvvvH75Hi1d6xLuvvvvvvvvsvvvDrdkPQQQQ0IgycO)F2XPbTiMeCWQbX)p740GwKsa8iWlArQabSsW98qKk1dPplcNXiOfP0IgycO)F2rYrbN6ZKGdwni()zhjhfCkLa4rGx0IubcyLG75HivQhsFweoJ)Jco1xPfnWKf3IUptYYz68NjYkBtWeq))SJpzghwMa6)NDKpMGNw7i742ygm5LfoSW3caWFp2XTXjNrgzWKm3OPmp2jqOgFNjxCCHZHrn9zYBZkhVt7mptErbNAaADfelMfY5Sta2Xn7ek74MDYGDCZotIDCZhtq(XCy0KPf(zNamjcAr8lM8YchwihctEzHdlC(btltcOIVOHlgtOddXlAruSNdgnzAHFoNpM8YchwijINl7424KZiJmyse0IE(XHLj4D(5YzYllCyHHqbNAaADXeIfloWKloUqsepx2jGBMCRH3CyutFM82SYX70oZZK4atEd7P(gu0GQz(zYllCyHbXIzHCo7eGDCZoHYoUzNmyh3SZKyNa8XeZooCzYobWJtMjE0bJMmTqoNjG()zhzcapc8IwKkqaRKQQQAeGk1dPplcNrp6GrtMwO6L5IusvvvvvvvL6H0NfHZOhDWOjtluDMkak2FvsvvvvvvvfUNhIupOFvsvvvDrdkPQQQQKQQQkCppePISNk1dPplcNX1qxr4(vTqvQhsFweoJRHUIW9RIFQM99YJJlqaR0IgusjLusjLusjLusjLusjLusjL4Jjru8E(hfE7a7eGj3A4rI45YobCZh7eWnNZKxw4WcdIfZc5C2ja74MDcLDCZozWoUzNjXob4JjrqlIFXeaw0nhg10NjVnRC8oTZ8mXf0AcU)p(Gly8hTi2XntWS0boNjhfBrxOCotg9yxKZ5JpM4)7dAXTq(ftok2IooNj)iYe2YoHgGjJESlY5StgCi8XhtaXO)pNZKFezcBzc5nM4nNWHpM4)7ZrXw0XHWKHiaarqp2zoNZKrp2f5C(4Jjqk4Y5mz0JDroNp(yY31cY5m5hrMWw2juMm6XUiNZoHYHWhFmXfoxhfBrhNZKrp2f5C(4JjaOGx0I4CMm6XUiNZhFmbAXwoNjJESlY58Xht8)9beJ()Ci8Xe4AkAr5M7Azc1dPVOqM8pk4uF(ftU1WZdxMmN1dVm)m5wdV5SOJj4lxLqrFvhkeAnBMCXXfoNfDmbF5Qek6R6qHqRzZKxw4WcNg93JDcWek4fXT5WOjtl8nTdl7eCa3mHIIJ0lArCotgPreNZKpifBnKDcWKZCxlta9)ZoYe)FFaTywihctaTywyU5UwMa6)NDKjdEi9IwetCZekMRmPSJBMaAXSWjyNamXC2XntaTywyiStaMaAXSWSZobyIHSJBMaAXSW58iqMaWJaVOfbeWkPQQQc3ZdrQEKlk4uaPs9q6ZIWze0IzHQaR0IgusjLusjLyc0E0Bzh3mb0IzHzJDcWKpifBnNDcWhFm5GrtMwiNZKZCxlta9)ZoYeq))SJpN5UwMS4w0Xeq))SJ4VhsVOfXKGdwni()zhXFpKErlsjaEe4fTivGubwjvvv1GdwvvvfZcsXuxdDfH7xDM6FXwWdivZiSAwO4fIhaaGunWfg18fAqyvQhsFweoJV8aaewffXcRAa(W7eb98zZavGvbwjvvvvmlift1e4G6m1rQHaP62Oz8Ey1aQ4xQzFV3G(VfivdCHrnFHgOcSQzPgWTBvGvsvvvfUNhIunboOIFRoPWQupK(SiCgxdDfH7xPfnOKskPKskPKskPKskPKsmb0)p7OdDCzsWbRge))SJo0XvjaEe4fTivGawj4EEisL6H0NfHZ4lpaakTObMa6)NDKja8iWlAraPU4w0fw1JINkWkPQQQQKQQQAeG6IBrN6SzQgKLZ05ptKv2MWavkAq1JIN6SzQg4cJA(cnq9YCrkPQQQQQQQQKQQQQQQQkMfKIPIOJBy1NWQrqlkS6)OGt9dR(ewDWdPx0IcRUg6kc3V6m1SqXd)3xEaaas1GJcnTNbHvPEi9zr4m(YdaqyvuelSAqHp8orqpF2ckvGvsvvvvvvvvjvvvvvvvvQhsFweoJi64QotfrhxvluL6H0NfHZ4lpaakPQQQQQQQs9q6ZIWzmcArQZuJGwKQfQs9q6ZIWzmcArkPQQQQQQQs9q6ZIWzCWdPx0IuNPAMkPQQQQQQQs9q6ZIWzCn0veUF1zQRHUIW9RAHQUvsvvvvvvvL6H0NfHZ4)OGt9vNP(pk4uFvlu1TsQQQQQQQQkPQQQQQQQgbOIOJR6SzQOiM6L5IusvvvvvvvvvvvL6H0NfHZOhDWOjtluDM6b9RsQQQQQQQQQQQQW98qKkak2FvsvvvvvvvDrdkPQQQQQQQc3ZdrQh0VkPQQQQQQQQKQQQ6IgusvvvvPfnWeq))SJtdArmj4GvdI)F2XPbTiLa4rGx0IubcyLG75HivQhsFweoJrqlsPfnWeq))SJKJco1NjbhSAq8)Zosok4ukbWJaVOfPceWkb3ZdrQupK(SiCg)hfCQVslAGjlUfDFMKLZ05ptKv2MGjG()zhFYmoSmb0)p7iFmXJoy0KPfY5mb0)p7ita4rGx0IubcyLuvvvJauPEi9zr4m6rhmAY0cvVmxKsQQQQQQQQupK(SiCg9OdgnzAHQZubqX(RsQQQQQQQQW98qK6b9RsQQQQlAqjvvvvLuvvvH75HivK9uPEi9zr4mUg6kc3VQfQs9q6ZIWzCn0veUFv8t1SVxECCbcyLw0GskPKskPKskPKskPKskPKskPeFm5wdpsepx2jGBM8Ychw4Bba4Vh7424KZiJmyYfhx4CyutFM82SYX70oZZKxuWPgGwxbXIzHCo7eGDCZoHYoUzNmyh3SZKyh38Xek4fTOpNZKikECotgSpG()zh5qycO)F2rMq9q6ZIWzCCvNPMfkEzpRPXFGunWfg18fAGkWkr9q6ZIWz8LhaGWQpHvPEi9zr4mgbTi1zQzFpIRfdBAealqQbM8KDpz8OkWkr9q6ZIWze0IzHQZuXpudnWKvnl1qF)9WQbmZ3vnl1qF)9WQzeQQzPg67VhwnGkEaLusj(4JjMDC4YKDcGhNmtEzHdlKdHjVSWHfo)GPLjbuXx0WfJjdXpEOhbErCltOyym5LfoSqsepx2XTXjNrgzWK4atMNcVmxKkXvCQv1m)mjcArp)4WYe8o)C5m5LfoSWqOGtnaTUycXIfhyYfhxijINl7eWntU1WBomQPptEBw54DAN5zcDyiErlII9CWOjtl8Z58XKm3OPmp2jqOgFNji)yomAY0c)StaMerX75Fu4TdStaMGNw7i742yg8XhtWXobMuOb4Jza
What's feature request that you are asking for?
To add a checkbox per aura or for the addon as a whole that will factor uiScale into SetSize, SetWidth, SetHeight and spacing/scaling.
Well ideally we would always do that but changing that now would move/resize for all users so maybe an option is not the worst idea.
Perhaps implement an option now, and then on the next expansion implement a one-time conversion to pixel perfection? After all, users quite frequently overhaul their UI, including WeakAuras on an x.0 patch.
I was just wondering with Legion coming too a close and the BFA Alpha already begun. Is there any eta on this being implemented, if ever? I'd love too see a Weak Auras running Pixel Perfect even if it is only as an option.
I should've closed this, actually. The pixel-perfectness of your WeakAuras is entirely based on whether your UI Scale is set properly for your screen resolution. If they're matched appropriately, auras will not break across pixels.
I haven't found this too be true in all cases. For instance as soon as I add anything too a group even things as simple as a square the image will bleed across pixels.
Also, we could calculate the right scaling within WeakAuras.
Anyway to answer your question: The start/end of a expansion is the worst time for new features. There are adjustments to api changes, new bugs in WoW and the templates need to be updated.
And as I and others work on WeakAuras in our free time, there are no etas for anything.
That's fair enough I hadn't considered all the changes too the API that happen before during and after an expansions launch, which would make it difficult to troubleshoot what is going wrong with with a new feature.
Apparently https://github.com/tomrus88/BlizzardInterfaceCode/blob/master/Interface/SharedXML/PixelUtil.lua is a helper file Blizzard has for pixel perfect positioning, no idea whether that'll help
My current workaround is to just set the WA main parent frame to the correct scale factor
-- Calculate UI scale based on window height
-- Sets WA main frame scale accordingly
local ui_scale = UIParent:GetEffectiveScale()
local height = select(2, GetPhysicalScreenSize())
local pp_scale = (768 / height) / ui_scale
WeakAuras.frames["WeakAuras Main Frame"]:SetScale(pp_scale)
GetPhysicalScreenSize is easier than parsing the cvar, btw
See also #1035
Figured I'd share some additional findings of my own since I've come back to WoW recently, all of which was prompted from ricco19 mentioning the parent frame scale factor, since I've no idea how to implement his work around myself.
As I mentioned above placing textures into a group causes them to no longer be pixel perfect. I have however found that if you set the Aura's "Anchored To" option to "Select Frame" then choose an element of the UI that you know is pixel perfect, "ElvUIParent" for example, the texture returns to a pixel perfect state even whilst in a grouped. This is true for "Icon" who's borders aren't displaying correctly as well, although I've found that just anchoring the group to a UI element that's pixel perfect is enough to fix them.
2.11.3 includes a small change to groups to fix another rendering issue. It might also have improved the pixel perfection group thing, @RoakStatic. Can you take a look?
I'm no longer able to replicate the boarder issues with "Icons" so what ever has changed may have fixed that.
"Textures" now remain pixel perfect, even whilst grouped and without any modification to "Anchored To" settings (so just default Screen/Parent Group, for both the group itself and the individual Weak Aura).
"Progress Bar" are the only things I can find that are not pixel perfect. You can force them to be if you set the "Anchored To" option to an element which is Pixel Perfect for the aura itself. If the "Progress Bar" is apart of a group then you can set the groups "Anchored To" to and element that's Pixel Perfect and that'll do the trick too.
One unexpected thing I observed is if you set the "Anchored To" of an individual Weak Aura, that is apart of a group, from "Screen/Parent Group" to "ElvUIParent" it will shift the Aura, only by 1 pixel on the x & y but this wasn't something I noticed before. This doesn't happen if you modify the groups "Anchored To" option only the individual Auras in the group. This is likely because the Anchor point has shifted by that much, but thought I'd bring it up, as it only happens to a Weak Aura when grouped an not when it's on its own.